Sql 获取两个日期列之间的月、日差

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,

我试图修复数据库中的一些问题,我想根据其他两个日期列重新计算数据库中的列。这个col是float,我想得到两个月内日期之间的差值,小数点是天

例如,如果我有两个日期“2016-01-15”、“2015-02-01”,则差额应为12.5(12个月差额中最好的一个),剩余15天的差额应为0.5

这是我迄今为止根据搜索结果所做的尝试,但我认为我遗漏了一些东西,因为它告诉我,我的日期列有一个错误,因为它不存在

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()
    返回一个间隔,因此取出零件是多余的(仅当您希望将它们放在单独的列中时才需要)

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()
    返回一个间隔,因此取出零件是多余的(仅当您希望将它们放在单独的列中时才需要)

不要用月份来表示差异。1月31日和2月28日之间的差异是什么?@GordonLinoff这是col的要求,它应该重新计算两个日期col的差异,以十进制表示:/。不要使用月份来表示差异。1月31日和2月28日之间有什么区别?@GordonLinoff这是col的要求,应该重新计算2个日期col的十进制差值:/。非常感谢,现在我理解了,重新计算每月的30,所以当我得到剩余天数时,我必须除以30才能得到小数点。非常感谢,现在我理解了,在我每月计算时,重新计算30,所以当我得到剩余天数时,我必须除以30得到小数点