查询过去5年

Evg*_*nik 10 sql database oracle time

我想查询过去5年内销售的所有产品.
有可能这样做:

select * from products
where time between sysdate-1826 and sysdate
Run Code Online (Sandbox Code Playgroud)

但它还有一个更好的方式,而不是计算所有的日子,并从中减去它sysdate

Jus*_*ave 21

SELECT *
  FROM products
 WHERE date_column >= add_months( sysdate, -12*5 )
Run Code Online (Sandbox Code Playgroud)

要么

SELECT *
  FROM products
 WHERE date_column >= sysdate - interval '5' year
Run Code Online (Sandbox Code Playgroud)

将为您提供过去5年中的所有行(尽管您通常希望添加一个TRUNC以删除时间部分,除非您真正关心是否在2007年2月8日早上或下午创建了一行).

  • 关于第二个示例的注意事项:如果 sysdate 恰好是闰日,则间隔算术将引发“ORA-01839:指定月份的日期无效”。 (2认同)