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 返回日期内的所有记录的主要内容,如果未能解决你的问题,请参考以下文章