我需要将 SQL 添加到报告查询中,该查询返回上周三的日期和本周星期二的日期。
我已经能够通过以下方式获取上一周的周二到本周的周一:
DATEDIFF(wk,DATEDIFF(wk,7,GETDATE()),1)
DATEDIFF(wk,DATEDIFF(wk,7,GETDATE()),7)
我是编码新手,因此欢迎提供任何建议。
我尝试调整上面的数字,但没有骰子。不确定是不是因为今天是“当前星期二”所以无法计算,也许我只需要明天尝试一下。
WITH dates AS (
SELECt CAST('2023-12-01' as DATE) as D
UNION ALL
SELECT DATEADD(DAY,1,D) FROM dates WHERE D<'2024-03-01'),
dow AS (
SELECT 1 as x, 'sunday' as dow union all
SELECT 2 as x, 'monday' as dow union all
SELECT 3 as x, 'tueday' as dow union all
SELECT 4 as x, 'wednesday' as dow union all
SELECT 5 as x, 'thursday' as dow union all
SELECT 6 as x, 'friday' as dow union all
SELECT 7 as x, 'saterday' as dow
)
SELECT
D,
DATEPART(weekday,D) as weekday, -- 1=sunday; 2=monday; 3=tuesday; ....
dow
FROM dates
INNER JOIN dow ON DATEPART(weekday,D)=x
WHERE D BETWEEN DATEADD(DAY, 3-DATEPART(weekday,GETDATE())-7, GETDATE())
AND DATEADD(DAY, 3-DATEPART(weekday,GETDATE()), GETDATE())
ORDER BY D
;
输出:
D | 工作日 | 陶氏 |
---|---|---|
2023-12-13 | 4 | 星期三 |
2023-12-14 | 5 | 星期四 |
2023-12-15 | 6 | 星期五 |
2023-12-16 | 7 | 星期六 |
2023-12-17 | 1 | 周日 |
2023-12-18 | 2 | 星期一 |
2023-12-19 | 3 | 星期二 |
参见:DBFIDDLE
3-DATEPART(weekday,GETDATE())
将使您在当前日期上添加 0 天。3-4
,所以从明天的日期中减去1,这又应该是星期二。