stored usec = reconstruct from hours+minutes+seconds+microseconds
Perhaps it wouldn't be a bad idea to provide a couple more extract() keywords to make that easier.
Thanks Tom! That helped me spell it out and understand it a little more clearly. Both to understand the non-identicalness, and to see the specifics. But yeah it would be nice if it was a little easier to extract! :)
WITH foo AS ( WITH inters AS ( SELECT '1 day 2 hours'::interval AS i1, '26 hours'::interval AS i2 ) SELECT *, EXTRACT(YEARS FROM i1)*12 + EXTRACT(MONTHS FROM i1) AS i1_months, EXTRACT(DAYS FROM i1) AS i1_days, EXTRACT(HOURS FROM i1) * 60 * 60 * 1000 + EXTRACT(MINUTES FROM i1) * 60 * 1000 + EXTRACT(SECONDS FROM i1) * 1000 + EXTRACT(MICROSECONDS FROM i1) AS i1_msec, EXTRACT(YEARS FROM i2)*12 + EXTRACT(MONTHS FROM i2) AS i2_months, EXTRACT(DAYS FROM i2) AS i2_days, EXTRACT(HOURS FROM i2) * 60 * 60 * 1000 + EXTRACT(MINUTES FROM i2) * 60 * 1000 + EXTRACT(SECONDS FROM i2) * 1000 + EXTRACT(MICROSECONDS FROM i2) AS i2_msec, i1=i2 AS equals FROM inters ) SELECT *, (i1_months=i2_months AND i1_days=i2_days AND i1_msec=i2_msec) AS identical, i1_months * 30 * 24 * 60 * 60 * 1000 + i1_days * 24 * 60 * 60 * 1000 + i1_msec AS i1_msec_total, i2_months * 30 * 24 * 60 * 60 * 1000 + i2_days * 24 * 60 * 60 * 1000 + i2_msec AS i2_msec_total