我正在尝试解决数据库中的一些问题,并且我想根据其他2个日期列重新计算数据库中的列。这个col是浮动的,我想以月为单位,以小数点表示的月份中两个日期之间的差额。
例如,如果我有2个日期'2016-01-15', '2015-02-01'
,则相差应为12个月相差的12.5%,其余15天应为0.5
到目前为止,这是我根据搜索尝试过的内容,但我认为我缺少某些内容,因为它告诉我日期列存在错误,因为它不存在
Select EXTRACT(year FROM vehicle_delivery(date, vehicle_received_date))*12 + EXTRACT(month FROM vehicle_delivery(date, vehicle_received_date));
其中vehicle_delivery
是我的表格名称,date
是我的结束日期,而vehicle_received_date
是我的开始日期
与此SQL相同的事物也很幸运:
select extract('years' from vehicle_delivery) * 12 + extract('months' from vehicle_delivery) + extract('days' from vehicle_delivery) / 30
from (select age(date::timestamp, vehicle_received_date::timestamp)) a;
答案 0 :(得分:2)
SQL应该看起来像这样:
select extract(year from diff) * 12 + extract(month from diff) + extract(day from diff) / 30
from (select age(date::timestamp, vehicle_received_date::timestamp) as diff
from vehicle_delivery
) vd;
我不知道/ 30
的目的是什么,但是您似乎想要它。
注意:
FROM
子句引用该表。extract()
中的第一个参数是关键字,而不是字符串。age()
中的extract()
值。extract()
返回一个间隔,因此取出这些部分是多余的(仅当您希望将它们放在单独的列中时才需要)。