Re: Intervals and ISO 8601 duration

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Ken Tanzer <ken(dot)tanzer(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Sebastien Flaesch <sebastien(dot)flaesch(at)4js(dot)com>, pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Intervals and ISO 8601 duration
Date: 2023-01-14 00:02:55
Message-ID: 4ba54cc3-004a-f7c9-2908-963321f401ba@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 1/13/23 15:57, Adrian Klaver wrote:
> On 1/13/23 15:32, Ken Tanzer wrote:
>> On Fri, Jan 13, 2023 at 3:03 PM Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com
>
>> Cheers,
>> Ken
>>
>> (*) These are probably bad suggestions, but something like...
>>
>>       EXTRACT ( (RAWHOURS|RAWDAYS|RAWMICROSECONDS) ... ?
>>       Or a function RAWEXTRACT( HOURS|DAYS|MICROSECONDS ) ?
>
> Close as I can get:
>
>
> WITH inters AS (
>     SELECT
>         extract(epoch from '1 day 2 hours'::interval) AS i1,
>         extract(epoch from '26 hours'::interval) AS i2
> )
> SELECT
>     i1,
>     i2,
>     i1=i2 AS "Equal?"
> FROM inters;
>
>  i1      |      i2      | Equal?
> --------------+--------------+--------
>  93600.000000 | 93600.000000 | t

Or:

WITH inters AS (
SELECT
make_interval(secs=>extract(epoch from '1 day 2
hours'::interval)) as i1,
make_interval(secs=>extract(epoch from '26 hours'::interval))
as i2
)
SELECT
i1,
i2,
i1=i2 AS "Equal?"
FROM inters;
i1 | i2 | Equal?
----------+----------+--------
26:00:00 | 26:00:00 | t

>
>>
>>
>>     --     Adrian Klaver
>>     adrian(dot)klaver(at)aklaver(dot)com <mailto:adrian(dot)klaver(at)aklaver(dot)com>
>>
>>
>>
>> --

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Bryn Llewellyn 2023-01-14 00:03:14 Re: Intervals and ISO 8601 duration
Previous Message Adrian Klaver 2023-01-13 23:57:13 Re: Intervals and ISO 8601 duration