如何获得当前周开始到结束的间隔例如
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,
DATEADD(dd, 6 - (@@DATEFIRST + 5 + DATEPART(dw, @d)) % 7, @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)) % 7, @d)
)
SELECT *
FROM cte