(Oracle)我必须返回过去12个月的所有记录。如何在PL/SQL中做到这一点?
编辑:对不起,我忘记解释了,我有一列数据类型的
(Oracle)我必须返回过去12个月的所有记录。如何在PL/SQL中做到这一点?
编辑:对不起,我忘记解释了,我有一列数据类型的
在PL/SQL中这样做与在SQL中这样做几乎是同义的。
SELECT *
FROM table
WHERE date_column >= ADD_MONTHS(TRUNC(SYSDATE),-12)
您可能想摆弄TRUNC语句来获得您想要的范围——我使用了TRUNC(SYSDATE),它与TRUNC(SYSTATE,D)相同——即删除SYSDATE的时间部分。例如,如果当前为8月12日,但您想要2月1日的值而不是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
SELECT *
FROM table
WHERE date_column > ADD_MONTHS(SYSDATE, -12)
不确定我是否应该为之前的帖子做下修改。。。只是想帮忙。
SELECT *
FROM table
WHERE date_column > SYSDATE - 365