Oracle SQL Where子句查找30天以前的日期记录

问题描述:

我想使用记录超过30天的创建日期字段在(Oracle SQL)表中查找记录。使用像>这样的操作符来查找记录会很好,但是如果任何人都可以建议使用快速SQL where子句语句来查找超过30天的记录,那将会很好。请推荐Oracle语法,因为这是我正在使用的。Oracle SQL Where子句查找30天以前的日期记录

用途:

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 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