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

时间:2018-09-30 13:37:44

标签: sql postgresql

我正在尝试解决数据库中的一些问题,并且我想根据其他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;

1 个答案:

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