PostgreSQL返回的奇怪格式的区间值

问题描述 投票:4回答:1

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

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

sql postgresql time intervals
1个回答
4
投票

使用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?

© www.soinside.com 2019 - 2024. All rights reserved.