【问题标题】:Oracle SQL Return all records within days of dateOracle SQL 返回日期内的所有记录
【发布时间】: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))"

标签: sql oracle date days


【解决方案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,但删除它可能会在一定程度上改变结果。
      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 2021-12-29
      • 2022-09-23
      相关资源
      最近更新 更多