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

标签 sql postgresql

我正在尝试修复我的数据库中的一些问题,我想根据其他 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/

相关文章:

arrays - Postgresql 使用函数检查数组中所有单个元素的约束

java - 子查询返回空结果集的PreparedStatement

sql - SQL 字典表是否应该有 IDENTITY 列

mysql - NodeJS,将来自 MySQL 和 PostgreSQL 的数据存储在 SQLite 中

sql - 在 has_one 关联的 Rails 3.2.11 中具有顺序的范围

javascript - 如何嵌套Sequelize关联?

sql - 同一事务的两个语句与单个语句的隔离级别

MySQL 错误 1442 : Can't Update Table, 但未引用表?

sql - MySQL查询地理中点

sql - 设置星期一是一周的第一天