Search Postgresql Archives

Re: Intervals and ISO 8601 duration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/13/23 15:32, Ken Tanzer wrote:
On Fri, Jan 13, 2023 at 3:03 PM Adrian Klaver <adrian.klaver@xxxxxxxxxxx <mailto:adrian.klaver@xxxxxxxxxxx>> 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@xxxxxxxxxxx <mailto:adrian.klaver@xxxxxxxxxxx>



--
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@xxxxxxxxxxxxxxxxxxx <mailto:ken.tanzer@xxxxxxxxxxxxxxxxxxx>
(253) 245-3801

Subscribe to the mailing list <mailto:agency-general-request@xxxxxxxxxxxxxxxxxxxxx?body=subscribe> to
learn more about AGENCY or
follow the discussion.

--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux