我正在尝试修复我的数据库中的一些问题,我想根据其他 2 个日期列重新计算我的数据库中的列。这个 col 是 float ,我想得到 2 个日期之间的差值,以月为单位,小数点为天。
例如,如果我有 2 个日期 '2016-01-15', '2015-02-01'
差异应该是 12.5 最好的 12 个月差异和 0.5 剩余 15 天
这是我到目前为止根据搜索所做的尝试,但我认为我遗漏了一些东西,因为它告诉我我的日期列有错误,因为它不存在
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;
最佳答案
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()
返回一个区间,因此取出部分是多余的(只有当您希望它们在单独的列中时才需要)。
关于sql - 获取两个日期列之间的月、日差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52578393/