【问题标题】:Strange format of interval value returned by PostgreSQLPostgreSQL返回的间隔值的奇怪格式
【发布时间】:2016-02-04 10:14:51
【问题描述】:

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

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

【问题讨论】:

    标签: sql postgresql time intervals


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-03-24
      • 2020-09-19
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多