我尝试过,但无法获得正确的解决方案。我想要一个列出当年所有周末日期的SQL查询。如何在SQL中获取当年的所有周末日期?
我想这个SQL查询:
WITH hier(num, lvl) AS (
SELECT 0, 1
UNION ALL
SELECT 100, 1
UNION ALL
SELECT num + 1, lvl + 1
FROM hier
WHERE lvl < 100
)
SELECT lvl [Week],
convert(date,DATEADD(dw, -DATEPART(dw, DATEADD(wk,DATEDIFF(wk,0,'12/31/'+convert(nvarchar,YEAR(getdate()))), 0)+6),
DATEADD(wk, DATEDIFF(wk,0,'12/31/'+convert(nvarchar,YEAR(getdate()))), 0)+6) - num * 7,101) [End Date]
FROM hier a
where num < 52
ORDER BY [End Date] asc
它的输出是这样的:
Week End date
52 2012-01-14
51 2012-01-21
50 2012-01-28
49 2012-02-04
我想日期以从头开始 - 因此,上述缺少一个周末,这是2012-07-01
。另外,我希望星期数字显示为1, 2, 3...
而不是52, 51...
。
首先,定义什么*你*在本周结束日期的意思是 - 不同文化背景的不同定义这些东西。假设你的周末是周六和周日,你需要什么日期?星期六,星期日,两者?如果两者,作为单列中的两列,还是分列? –
结束日期是星期六 –