gpt4 book ai didi

sql - 按周分组日期范围

转载 作者:行者123 更新时间:2023-12-05 00:43:35 25 4
gpt4 key购买 nike

我有一个日期范围,其中开始日期是今天之前的 2 年。
例如)'05/29/2007' ~ '05/29/2009'。

如何突破日期范围以便获得如下列表?

(开始日期以“05/27/2007”开头,而不是“05/29/2007”,因为工作日的开始是星期日,“05/27/2007”是“05/29/2007”的第一天以及最后一个 EndDate 的相同推理,05/30/2009,即星期六)

StartDate   EndDate
05/27/2007 06/02/2007
06/03/2007 06/09/2007
...
05/24/2009 05/30/2009

[更新] 这是我的最终查询
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 num, lvl,
DATEADD(dw, -DATEPART(dw, '2007-05-29'), '2007-05-29') + num * 7,
DATEADD(dw, -DATEPART(dw, '2007-05-29'), '2007-05-29') + (num + 1) * 7
FROM hier
where num <= 104 --; 52 weeks/year * 2
ORDER BY num

最佳答案

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 DATEADD(dw, -DATEPART(dw, '29.05.2007'), '29.05.2007') + num * 7,
DATEADD(dw, -DATEPART(dw, '29.05.2007'), '29.05.2007') + (num + 1) * 7
FROM hier
WHERE DATEADD(dw, -DATEPART(dw, '29.05.2007'), '29.05.2007') + num * 7 < '29.05.2009'
ORDER BY
num

这将生成一个包含您需要的范围的行集。

关于sql - 按周分组日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com