问题描述
如何获得从本周开始到结束的时间间隔 例如
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