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.