甲骨文Datadiff
时间:2020-03-06 14:39:22 来源:igfitidea点击:
(Oracle)我必须返回过去12个月的所有记录。如何在PL / SQL中做到这一点?
编辑:对不起,我忘了解释,我确实有DATA类型的列
解决方案
SELECT * FROM table WHERE date_column > SYSDATE - 365
SELECT * FROM table WHERE date_column > ADD_MONTHS(SYSDATE, -12)
不确定我是否应该为较早的帖子改版...只是在尝试提供帮助。
在PL / SQL中执行此操作与在SQL中执行此操作几乎是同义词。
SELECT * FROM table WHERE date_column >= ADD_MONTHS(TRUNC(SYSDATE),-12)
我们可能想弄乱TRUNC语句以获取所需的确切范围-我使用了TRUNC(SYSDATE)与TRUNC(SYSDATE,'D')-ie相同。删除sysdate的时间部分。例如,如果当前是8月12日,但是我们希望使用2月01日而不是2月12日的值,则使用:
SELECT * FROM table WHERE date_column >= ADD_MONTHS(TRUNC(SYSDATE,'MM'),-12)
另外,请参阅文档以处理具有不同天数的月份:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions004.htm#SQLRF00603