【发布时间】:2011-04-21 02:11:52
【问题描述】:
我想使用创建日期字段在 (Oracle SQL) 表中查找超过 30 天的记录。使用像 > 这样的运算符查找记录会很好,但如果有人可以建议快速 SQL where 子句语句来查找超过 30 天的记录,那就太好了。请建议 Oracle 语法,因为这就是我正在使用的。
【问题讨论】:
标签: sql oracle date-arithmetic
我想使用创建日期字段在 (Oracle SQL) 表中查找超过 30 天的记录。使用像 > 这样的运算符查找记录会很好,但如果有人可以建议快速 SQL where 子句语句来查找超过 30 天的记录,那就太好了。请建议 Oracle 语法,因为这就是我正在使用的。
【问题讨论】:
标签: sql oracle date-arithmetic
用途:
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)
【讨论】:
creation_date <= TRUNC(SYSDATE) - interval '1' month :)
interval 表达式旨在正确处理这些情况...
WHERE TRUNC(creation_date) <= TRUNC(SYSDATE) - 30一样截断创建日期?