【问题标题】:Find the Friday after Next in Oracle在 Oracle 中查找下一个之后的星期五
【发布时间】:2019-08-05 14:31:46
【问题描述】:

我有一个奇怪的情况,我需要将 DueDate 设置为下周五。

因此,如果日期是 2019 年 3 月 11 日星期一,那么 DueDate 就是 3 月 22 日星期五。

我可以通过以下方式轻松做到这一点:

TRUNC(Next_Day(FilingPeriod, 'FRI')) + 7 as DueDate

我的问题出现在 2019 年 3 月 15 日星期五,广告的 DueDate 也应该是 3 月 22 日星期五,而不是 3 月 29 日星期五。

我明白为什么了。我一直在寻找一种方法来简化这一点,或者进行检查以确定当前日期是否是星期五并从那里开始。

我已经找了一些并阅读了类似的问题,但我似乎仍然无法找到它。 感谢您的帮助

【问题讨论】:

    标签: sql oracle date truncate


    【解决方案1】:

    使用NEXT_DAY()之前的日期减1即可:

    TRUNC(Next_Day(FilingPeriod - 1, 'FRI')) + 7 as DueDate
    

    【讨论】:

    • 我怎么没想到。这是漫长的一周!非常感谢。
    【解决方案2】:

    回到星期一,ISO 周的第一天。然后去加 4,再加 7 天:

    TRUNC(FilingPeriod, 'iw') + 11
    

    附带说明:我会尽可能避免使用NEXT_DAY。日期名称取决于当前的语言设置,NEXT_DAY 没有参数可以覆盖它。这使得该函数相当危险,因为它使查询容易失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 2013-11-03
      • 2012-04-24
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多