【发布时间】: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