pá 26. 6. 2020 v 7:29 odesílatel Thomas Kellerer <sham...@gmx.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
>
>
>
>

Reply via email to