【发布时间】:2020-09-16 15:02:17
【问题描述】:
我有两个日期 21/10/2019 和 26/6/2031,从这两个日期开始,我需要从第一个日期开始的三个月间隔的日期列表,如下所示:
22/10/2019 | 21/01/2020
22/01/2020 | 21/04/2020
22/04/2020 | 21/07/2020
22/07/2020 | 21/10/2020
...
22/01/2031 | 21/04/2031
22/04/2031 | 26/06/2031
我尝试使用ROW_NUMBER() 和DENSE_RANK() 和LAG() 将两个日期之间的完整日期列表分组,但我似乎无法弄清楚。我想我可能需要以某种方式对其进行分区,但我做不到。
如果你不明白,请告诉我。我对此很陌生:)
【问题讨论】:
-
您接受的答案与您发布的预期输出不匹配。接受的答案有一个 Start_Date 开始于本月 21 日并结束于本月 20 日,但您非常明确地发布了预期输出,其中 Start_Dates 都在本月 22 日和 End_Date 结束于每个月的 21 日一个月的回报。哪个是对的?您的预期输出或您接受的答案?
-
我接受了答案,因为代码可以正常工作,我只是修改了它以获得我需要的日期。我不知道递归查询,所以这对我很有帮助:-)
-
好的,谢谢。当涉及到内存读取和 CPU 时,即使对于相对较小的东西,增量递归 CTE 也会对系统造成很大的负担。您是否对不同的方式感兴趣?
标签: sql sql-server date datetime recursive-query