【问题标题】:Oracle: Retrive records which have upd_ts less than two year agoOracle:检索不到两年前具有 upd_ts 的记录
【发布时间】:2021-03-11 07:03:08
【问题描述】:

我正在尝试获取过去两年内具有 upd_ts 的记录。我该怎么做?使用 ADD_MONTHS() 是个好选择吗?

【问题讨论】:

  • 是的,您可以使用 add_months 从今天开始计算 24 个月,这可用于过滤您的 upd_ts 列(假设这是一个日期)
  • somethign like this Select * from Table where upd_ts
  • ADD_MONTHS() 可能是一个好方法。但是你必须对“不到两年前”有一个非常明确的定义。一般来说,像... > add_months(sysdate, -24) 这样的过滤器是一个非常糟糕的主意。为什么?因为输出将取决于您运行查询的确切时间。相反,在业务应用程序中,当我们询问“过去两年”时,我们可能指的是“过去 24 个完整月”或类似的东西。如果您在今天 2020 年 11 月 28 日印度标准时间 14:30 运行查询,您可能会要求提供 2018 年 11 月 1 日至 2020 年 10 月 31 日的数据。
  • 这意味着从表中选择 upd_ts 具有 2 年前值的每一列。我怀疑你的意思是>>=
  • 所有这些要求都可以处理,你只需要非常清楚你必须包括什么。

标签: sql oracle oracle11g oracle10g


【解决方案1】:

试一试。

select * from table_name where trunc(date_column)>=trunc(sysdate- INTERVAL '2' YEAR);

【讨论】:

    猜你喜欢
    • 2012-11-23
    • 1970-01-01
    • 2023-03-24
    • 2018-12-31
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    相关资源
    最近更新 更多