Sql 获取两个日期列之间的月、日差
我试图修复数据库中的一些问题,我想根据其他两个日期列重新计算数据库中的列。这个col是float,我想得到两个月内日期之间的差值,小数点是天 例如,如果我有两个日期“2016-01-15”、“2015-02-01”,则差额应为12.5(12个月差额中最好的一个),剩余15天的差额应为0.5 这是我迄今为止根据搜索结果所做的尝试,但我认为我遗漏了一些东西,因为它告诉我,我的日期列有一个错误,因为它不存在Sql 获取两个日期列之间的月、日差,sql,postgresql,Sql,Postgresql,我试图修复数据库中的一些问题,我想根据其他两个日期列重新计算数据库中的列。这个col是float,我想得到两个月内日期之间的差值,小数点是天 例如,如果我有两个日期“2016-01-15”、“2015-02-01”,则差额应为12.5(12个月差额中最好的一个),剩余15天的差额应为0.5 这是我迄今为止根据搜索结果所做的尝试,但我认为我遗漏了一些东西,因为它告诉我,我的日期列有一个错误,因为它不存在 Select EXTRACT(year FROM vehicle_delivery(date,
Select EXTRACT(year FROM vehicle_delivery(date, vehicle_received_date))*12 + EXTRACT(month FROM vehicle_delivery(date, vehicle_received_date));
其中,vehicle\u delivery
是我的表名,date
是我的结束日期,vehicle\u received\u 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;
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()
- 您想引用
中的extract()
值age()
返回一个间隔,因此取出零件是多余的(仅当您希望将它们放在单独的列中时才需要)extract()
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()
- 您想引用
中的extract()
值age()
返回一个间隔,因此取出零件是多余的(仅当您希望将它们放在单独的列中时才需要)extract()