2008-09-24 31 views
0

(Oracle)我必須返回最近12個月的所有記錄。如何在PL/SQL中做到這一點?Oracle Datadiff

編輯:對不起,我忘了介紹,我有數據類型的列

回答

-1
SELECT * 
FROM table 
WHERE date_column > SYSDATE - 365 
+0

不閏年兼容 – 2008-09-24 13:47:09

0
SELECT * 
FROM table 
WHERE date_column > ADD_MONTHS(SYSDATE, -12) 

不知道我應得下改裝了前面的帖子......只是想幫助。

+0

沒有Oracle ROLL_MONTHS這樣的功能 – 2008-09-24 12:14:40

3

在PL/SQL中這樣做與在SQL中執行此操作幾乎是同義詞。

SELECT * 
FROM table 
WHERE date_column >= ADD_MONTHS(TRUNC(SYSDATE),-12) 

你可能會喜歡鼓搗TRUNC語句來獲得真正想要的範圍內 - 我用TRUNC(SYSDATE),這是一樣的TRUNC(SYSDATE,「d」) - 即。刪除sysdate的時間部分。舉例來說,如果它是目前08月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