总计的Postgres时间间隔

时间:2019-05-30 07:24:29

标签: postgresql

我有一个带有间隔数据的Postgres表,例如:

  • 0个月
  • 1个月
  • 1.5个月
  • 9个月
  • 1年

我想创建一个显示值的视图,但以总月份为单位(因此,我的正确值是:0、1、1.5、9、12)。我尝试使用:

EXTRACT(MONTHS FROM "MyTable"."Interval"::INTERVAL)

但是,这会产生错误的结果(0、1, 1 ,9, 0 )。

还有另一个可以显示期望值的功能吗?

1 个答案:

答案 0 :(得分:1)

好吧,extract函数从日期/时间值而不是所需的总时间中检索年份或小时等子字段,但是我们可以自己构造结果,如下所示:

postgres=# select * from month_table ;
   month    
------------
 0 month
 1 month
 1.5 months
 9 months
 1 year
 2 years
 1.5 years
(7 rows)

postgres=# select                     
    case when month ~ 'month' then regexp_replace(month,' month.*','')::numeric
         when month ~ 'year' then regexp_replace(month,' year.*','')::numeric * 12 end as months
from 
    month_table;
 months 
--------
      0
      1
    1.5
      9
     12
     24
   18.0
(7 rows)