【发布时间】:2016-03-16 18:24:32
【问题描述】:
我希望在 oracle sql 中找到去年的同一天。例如,2016 年 3 月 16 日星期三将是去年的 2015 年 3 月 18 日星期三。所以最近的一天。
以下代码在当前闰年之前运行良好,并在 2016 年 2 月 29 日之后中断。
这是我的旧声明,不适用于所有日期:
NEXT_DAY(TRUNC(ADD_MONTHS(date, -12), 'iw')-2, TO_CHAR(date, 'DY'))
【问题讨论】:
-
我不明白。您是否只想准确减去 52*7 = 364 天以获得相同的星期几?
-
“去年的同一天”是什么意思?去年的“同一天”是当前日期 - 12 个月或
ADD_MONTHS(SYSDATE, -12),至少在我的书中。对于 2016 年 2 月 29 日,这将返回 2015 年 2 月 28 日。请编辑您的问题并添加您对“去年同一天”使用的任何定义。谢谢。