获取上周三到当前周二的日期以获取每周报告

问题描述 投票:0回答:1

我需要将 SQL 添加到报告查询中,该查询返回上周三的日期和本周星期二的日期。

我已经能够通过以下方式获取上一周的周二到本周的周一:

DATEDIFF(wk,DATEDIFF(wk,7,GETDATE()),1)
DATEDIFF(wk,DATEDIFF(wk,7,GETDATE()),7)

我是编码新手,因此欢迎提供任何建议。

我尝试调整上面的数字,但没有骰子。不确定是不是因为今天是“当前星期二”所以无法计算,也许我只需要明天尝试一下。

sql-server ssrs-2012
1个回答
0
投票
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,这又应该是星期二。
© www.soinside.com 2019 - 2024. All rights reserved.