我有 PostgreSQL 9.5.0,我观察到非常相似的查询返回的奇怪的间隔值。我认为然后间隔大于 24 小时然后它返回与 days 部分是这样的:

SELECT (1000 * ('2016-02-04 12:00:11'::timestamp - '2016-02-03 12:00:00'::timestamp)::interval)::interval

1000 days 03:03:20

但有时小时不会转换为天:
SELECT (1000 * ('2016-02-04 11:00:11'::timestamp - '2016-02-03 12:00:00'::timestamp)::interval)::interval

23003:03:20

如何强制使用天数部分使用相同的输出格式?

最佳答案

使用 justify_hours() :

SELECT justify_hours(1000 * ('2016-02-04 11:00:11'::timestamp - '2016-02-03 12:00:00'))

   justify_hours
-------------------
 958 days 11:03:20
(1 row)

justify_interval() :
SELECT justify_interval(1000 * ('2016-02-04 11:00:11'::timestamp - '2016-02-03 12:00:00'))

        justify_interval
---------------------------------
 2 years 7 mons 28 days 11:03:20
(1 row)

另见:Why postgres show two different format for same interval value?

关于sql - PostgreSQL 返回的区间值的奇怪格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35198185/

10-14 06:15