如何获得SQL Server中Compelete年的星期数,开始日期和结束日期?

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

如何获取完整年份的完整星期编号,开始日期和结束日期。

  1. 一周从星期日到星期六开始

  2. 同时第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

sql sql-server date week-number
1个回答
0
投票

如果您对仅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
© www.soinside.com 2019 - 2024. All rights reserved.