Re: Intervals and ISO 8601 duration - Mailing list pgsql-general

From Ken Tanzer
Subject Re: Intervals and ISO 8601 duration
Date
Msg-id CAD3a31XM7TczB9aY2AA3Ld7PFLuwLra3dxqPu2zGd5F0Kb9w2Q@mail.gmail.com
Whole thread Raw
In response to Re: Intervals and ISO 8601 duration  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: Intervals and ISO 8601 duration  (Adrian Klaver <adrian.klaver@aklaver.com>)
Re: Intervals and ISO 8601 duration  (Adrian Klaver <adrian.klaver@aklaver.com>)
List pgsql-general
On Fri, Jan 13, 2023 at 3:03 PM Adrian Klaver <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 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



--
AGENCY Software  
A Free Software data system
By and for non-profits
(253) 245-3801

learn more about AGENCY or
follow the discussion.

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: Intervals and ISO 8601 duration
Next
From: Adrian Klaver
Date:
Subject: Re: Intervals and ISO 8601 duration