在Oracle中找到Next之后的星期五

问题描述 投票:3回答:2

我有一个奇怪的情况,我需要将截止日期定为下周五。

因此,如果日期是2019年3月11日星期一,则截止日期是3月22日星期五。

我可以通过以下方式轻松完成此操作:

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

我的问题发生在2019年3月15日星期五广告时,它的截止日期应该是3月22日星期五,而它的截止日期是3月29日星期五。

我明白了。我一直在寻找一种方法来简化这个或者检查以确定当前日期是星期五还是从那里开始。

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

sql oracle date truncate
2个回答
2
投票

从使用NEXT_DAY()之前的日期中减去1:

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

2
投票

回到周一,也就是ISO周的第一天。然后再加4,再加7天:

TRUNC(FilingPeriod, 'iw') + 11

旁注:我尽可能避免使用NEXT_DAY。日期名称取决于当前的语言设置,NEXT_DAY没有参数来覆盖它。这使得函数变得相当危险,因为它使查询容易出错。

© www.soinside.com 2019 - 2024. All rights reserved.