甲骨文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