From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | Thomas Kellerer <shammat(at)gmx(dot)net> |
Cc: | pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: timestamp - timestamp result |
Date: | 2020-06-26 05:49:08 |
Message-ID: | CAFj8pRA2SbOjviqpcbaRNZPnTfU3EuvPnQAZk+fj0iuuhOCPgA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
pá 26. 6. 2020 v 7:29 odesílatel Thomas Kellerer <shammat(at)gmx(dot)net> napsal:
> I regularly see people suggesting to use
>
> extract(day from one_timestamp - other_timestamp)
>
> to calculate the difference between two timestamps in days.
>
> But I wonder if the "format" of the resulting interval is guaranteed to
> only have days
> (and not months or years)
>
> The following:
>
> timestamp '2020-06-26 17:00:00' - timestamp '2019-04-01 14:00:00'
>
> returns an interval like this:
>
> 0 years 0 mons 452 days 3 hours 0 mins 0.0 secs
>
> However, is there ever a chance that the expression will yield the
> (equivalent) interval:
>
> 1 years 2 mons 25 days 3 hours 0 mins 0.0 secs
>
postgres=# select age(timestamp '2020-06-26 17:00:00',timestamp '2019-04-01
14:00:00');
┌────────────────────────────────┐
│ age │
╞════════════════════════════════╡
│ 1 year 2 mons 25 days 03:00:00 │
└────────────────────────────────┘
(1 row)
>
> e.g. as the age() function does.
>
> Is it safe to assume that "timestamp - timestamp" will never contain units
> larger then days?
>
Now, this operator internally calls only interval_justify_hours functions.
So if somebody doesn't change related code, you can expect so only days,
hours field's are changed.
Regards
Pavel
>
>
> Thomas
>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Ishan Joshi | 2020-06-26 06:49:47 | RE: Postgres server 12.2 crash with process exited abnormally and possibly corrupted shared memory |
Previous Message | Thomas Kellerer | 2020-06-26 05:28:43 | timestamp - timestamp result |