Re: timestamp - timestamp result

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

In response to

Responses

Browse pgsql-general by date

  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