如何获取完整年份的完整星期编号,开始日期和结束日期。
注
一周从星期日到星期六开始
同时第1周(例如:01-01-2020至04-01-2020),而上周应为(例如:27-12-2020至31-12-2020)
预期结果
WeekNo WeekStartDate WeekEndDate
===================================
1 2019-01-01 2019-01-05
2 2019-01-06 2019-01-12
3 2019-01-13 2019-01-19
4 2019-01-20 2019-01-26
5 2019-01-27 2019-02-02
6 2019-02-03 2019-02-09
7 2019-02-10 2019-02-16
8 2019-02-17 2019-02-23
9 2019-02-24 2019-03-02
...
...upto end of the year
实际上我也尝试过这个rextester
如果您对仅2019年]感兴趣,那么以下代码将完全生成您想要的内容:
DECLARE @weekNum INT = 1; WITH Weeks AS ( SELECT @weekNum AS WeekNo UNION ALL SELECT WeekNo + 1 FROM Weeks WHERE WeekNo + 1 <= 53 ) SELECT WeekNo, CASE WHEN WeekStartDate < '2019-01-01' THEN CONVERT(DATE, '2019-01-01') ELSE CONVERT(DATE, WeekStartDate) END AS WeekStartDate, CASE WHEN WeekEndDate > '2019-12-31' THEN CONVERT(DATE, '2019-12-31') ELSE CONVERT(DATE, WeekEndDate) END AS WeekEndDate FROM ( SELECT WeekNo, DATEADD(WEEK, WeekNo - 1, '2018-12-30') AS WeekStartDate, DATEADD(WEEK, WeekNo - 1, '2019-01-05') AS WeekEndDate FROM Weeks ) a
输出:
WeekNo WeekStartDate WeekEndDate
1 2019-01-01 2019-01-05
2 2019-01-06 2019-01-12
3 2019-01-13 2019-01-19
4 2019-01-20 2019-01-26
5 2019-01-27 2019-02-02
6 2019-02-03 2019-02-09
7 2019-02-10 2019-02-16
8 2019-02-17 2019-02-23
...
51 2019-12-15 2019-12-21
52 2019-12-22 2019-12-28
53 2019-12-29 2019-12-31