2010-10-05 602 views
29

我想使用記錄超過30天的創建日期字段在(Oracle SQL)表中查找記錄。使用像>這樣的操作符來查找記錄會很好,但是如果任何人都可以建議使用快速SQL where子句語句來查找超過30天的記錄,那將會很好。請推薦Oracle語法,因爲這是我正在使用的。Oracle SQL Where子句查找30天以前的日期記錄

回答

51

用途:

SELECT * 
    FROM YOUR_TABLE 
WHERE creation_date <= TRUNC(SYSDATE) - 30 

SYSDATE返回的日期&時間; TRUNC將日期重置爲截至午夜,因此如果您想要包括當前時間在內的前30天的creation_date,則可以省略該日期。

根據你的需要,你也可以看看使用ADD_MONTHS

SELECT * 
    FROM YOUR_TABLE 
WHERE creation_date <= ADD_MONTHS(TRUNC(SYSDATE), -1) 
+3

我喜歡'CREATION_DATE <= TRUNC(SYSDATE) - 間隔 '1' month' :) – 2010-10-05 04:03:20

+3

@be現在在這裏:這很好,只要您不介意ORA-01839在某些情況下「指定的月份無效」如果creation_date是3月31日。 – 2010-10-05 04:38:38

+1

嗯,我一直認爲'間隔'表達式是爲了正確處理這些情況而設計的...... – 2010-10-05 04:57:34