当前周的间隔

问题描述

如何获得从本周开始到结束的时间间隔 例如

20210118
20210119
20210120
20210121
20210222
20210123

以便检查日期是当前日期,而无需手动输入日期。

我可以获取开始日期和结束日期,但需要间隔输出

SET DATEFirsT 4  
DECLARE @d DATETIME

SET @d = GETDATE()

SELECT
  @d ThatDate,DATEADD(dd,0 - (@@DATEFirsT + 5 + DATEPART(dw,@d)) % 7,@d) Monday,6 - (@@DATEFirsT + 5 + DATEPART(dw,@d) Sunday

解决方法

您可以使用递归 CTE。我以您发布的结果为例,但只有六天。不确定是否要排除星期日?

SET DATEFIRST 4  
DECLARE @d DATETIME

SET @d = GETDATE()


;WITH cte AS(

    SELECT DATEADD(dd,0 - (@@DATEFIRST + 5 + DATEPART(dw,@d)) % 7,@d) Dts
    UNION ALL
    SELECT DATEADD(dd,1,Dts) Dts
    FROM cte
    WHERE Dts <= DATEADD(dd,4 - (@@DATEFIRST + 5 + DATEPART(dw,@d)
)

SELECT *
FROM cte