我有一个带有间隔数据的Postgres表,例如:
我想创建一个显示值的视图,但以总月份为单位(因此,我的正确值是:0、1、1.5、9、12)。我尝试使用:
EXTRACT(MONTHS FROM "MyTable"."Interval"::INTERVAL)
但是,这会产生错误的结果(0、1, 1 ,9, 0 )。
还有另一个可以显示期望值的功能吗?
答案 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)