Oracle SQL Where 子句查找超过 30 天的日期记录

Posted

技术标签:

【中文标题】Oracle SQL Where 子句查找超过 30 天的日期记录【英文标题】:Oracle SQL Where clause to find date records older than 30 days 【发布时间】:2011-04-21 02:11:52 【问题描述】:

我想使用创建日期字段在 (Oracle SQL) 表中查找超过 30 天的记录。使用像 > 这样的运算符查找记录会很好,但如果有人可以建议快速 SQL where 子句语句来查找超过 30 天的记录,那就太好了。请建议 Oracle 语法,因为这就是我正在使用的。

【问题讨论】:

【参考方案1】:

用途:

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 &lt;= TRUNC(SYSDATE) - interval '1' month :) @be here now:没关系,只要您不介意在某些情况下它是否因 ORA-01839“指定月份的日期无效”而失败,例如如果 creation_date 是 3 月 31 日。 嗯,我一直相信interval 表达式旨在正确处理这些情况... 我们是否应该像WHERE TRUNC(creation_date) &lt;= TRUNC(SYSDATE) - 30一样截断创建日期?

以上是关于Oracle SQL Where 子句查找超过 30 天的日期记录的主要内容,如果未能解决你的问题,请参考以下文章

1. 安装Oracle,配置环境 2. 实现查询From子句 3. 实现查询where子句 4. 实现查询order by子句

一个奇怪的 Oracle SQL,它来自 3 个表,但在 where 子句中只留下了 join 2?

oracle 形式:pl/sql 中 where 子句中的 max 子句

基于过程输入变量的条件 Where 子句 Oracle SQL

如何强制 where 子句中的函数在 oracle 中执行一次?

Oracle 到 SQL Server:月 + 年 where 子句