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...