Re: Intervals and ISO 8601 duration

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Intervals and ISO 8601 duration
Дата
Msg-id d66d3ff9-2e85-253f-4637-cc488954f760@aklaver.com
обсуждение исходный текст
Ответ на Re: Intervals and ISO 8601 duration  (Ken Tanzer <ken.tanzer@gmail.com>)
Ответы Re: Intervals and ISO 8601 duration  (Ken Tanzer <ken.tanzer@gmail.com>)
Список pgsql-general
On 1/13/23 15:32, Ken Tanzer wrote:
> On Fri, Jan 13, 2023 at 3:03 PM Adrian Klaver <adrian.klaver@aklaver.com 
> <mailto:adrian.klaver@aklaver.com>> wrote:
> 
> 
>     WITH inters AS (
>           SELECT
>               '1 day 2 hours'::interval AS i1,
>               '26 hours'::interval AS i2,
>               justify_interval('1 day 2 hours'::interval) AS ij1,
>               justify_interval('26 hours'::interval) AS ij2
>     )
>     SELECT
>           *,
>           to_char(justify_interval(i1),'HH24:MM:SS') AS i1_char,
>           to_char(justify_interval(i2),'HH24:MM:SS') AS i2_char,
>           i1=i2 AS "Equal?"
> 
>             i1       |    i2    |      ij1       |      ij2       | i1_char
>     | i2_char  | Equal?
>     ----------------+----------+----------------+----------------+----------+----------+--------
>        1 day 02:00:00 | 26:00:00 | 1 day 02:00:00 | 1 day 02:00:00 |
>     02:00:00
>     | 02:00:00 | t
> 
> 
> I'm not quite sure what this is meant to convey.  Maybe justify_hours 
> and justify_days will return something that uniquely maps to the raw 
> data, and maybe it doesn't (I can't figure that out!).  But then there's 
> still no justify_seconds or something that would get at the raw 
> microseconds being stored.
> 
> And I could be wrong, but it seems like you were aiming towards making 
> these two intervals the same.  I was trying to zero in on the 
> opposite--what is it that makes them different (not identical), and how 
> to access that information.  I was assuming that if they were not 

This:

  WITH inters AS (
     SELECT
         '1 day 2 hours'::interval AS i1,
         '26 hours'::interval AS i2
)
SELECT
     i1=i2 AS "Equal?"
FROM inters;

say the intervals are equal.

If I am following what you want is to_char(<interval>,'HH24:MM:SS') to 
be equal, correct?


> identical, the internal representation in Months, Days and Microseconds 
> must be different--maybe that assumption is not valid.  And maybe there 
> is currently no way to get that raw representation.  If that's the case, 
> so be it, although I might then put in a small plug for it as a feature 
> request. :) (*)
> 
> Cheers,
> Ken
> 
> (*) These are probably bad suggestions, but something like...
> 
>       EXTRACT ( (RAWHOURS|RAWDAYS|RAWMICROSECONDS) ... ?
>       Or a function RAWEXTRACT( HOURS|DAYS|MICROSECONDS ) ?
> 
> 
>     -- 
>     Adrian Klaver
>     adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
> 
> 
> 
> -- 
> AGENCY Software
> A Free Software data system
> By and for non-profits
> /http://agency-software.org/ <http://agency-software.org/>/
> /https://demo.agency-software.org/client 
> <https://demo.agency-software.org/client>/
> ken.tanzer@agency-software.org <mailto:ken.tanzer@agency-software.org>
> (253) 245-3801
> 
> Subscribe to the mailing list 
> <mailto:agency-general-request@lists.sourceforge.net?body=subscribe> to
> learn more about AGENCY or
> follow the discussion.

-- 
Adrian Klaver
adrian.klaver@aklaver.com




В списке pgsql-general по дате отправления:

Предыдущее
От: Ken Tanzer
Дата:
Сообщение: Re: Intervals and ISO 8601 duration
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: Intervals and ISO 8601 duration