Oracle SQL 返回日期内的所有记录

Posted

技术标签:

【中文标题】Oracle SQL 返回日期内的所有记录【英文标题】:Oracle SQL Return all records within days of date 【发布时间】:2011-09-29 14:22:34 【问题描述】:

我希望有人可以帮助我解决这个问题。

以下 SQL 仅返回给定表中的记录,具体是距当前 20 天。

Last_Mod_Date = TO_DATE(SYSDATE - 20)

使用类似的理论,有人可以帮我确定如何返回过去 20 天范围内的所有记录吗?

谢谢!

【问题讨论】:

Last_Mod_Date > TO_DATE(SYSDATE - 20) ? 在您的示例中 Last_Mod_date = TO_DATE(SYSDATE - 20) 不太可能匹配任何内容,因为它说“从现在起正好 20 天”(到毫秒) 一种较弱的形式可能更接近您想要的是 "TRUNC(Last_Mod_date) = TRUNC(TO_DATE(SYSDATE - 20))" 【参考方案1】:
select 
  *
from
  table
where
  Last_Mod_Date >= trunc(sysdate-20);

【讨论】:

【参考方案2】:
SELECT * 
FROM MY_TABLE 
WHERE TO_DATE(my_ts_field) BETWEEN TO_DATE(SYSDATE-20) AND TO_DATE(SYSDATE)

【讨论】:

【参考方案3】:

将比较更改为大于或等于:

Last_Mod_Date >= TO_DATE(SYSDATE-20)

【讨论】:

嗯,好点。我只是从原始问题中复制了它,但当然 TO_DATE 不是必需的。虽然它可能正在有效地执行 TRUNC,但删除它可能会在一定程度上改变结果。

以上是关于Oracle SQL 返回日期内的所有记录的主要内容,如果未能解决你的问题,请参考以下文章

返回用户输入日期之前用户输入时间间隔内的所有记录

SQL从日期范围内的同一表中的不同记录中获取多个项目的总和(ORACLE)

SQL 从所有时间记录中返回第一个记录日期

mysql返回一段时间内的所有日期

SQL 返回另一个日期前 18 个月的所有记录(到月底)

如何在 Oracle 中查找 SQL 查询中返回的记录的内存大小?