根据服务日期创建周日期范围列
Create Week Date Range column based on the service date
我需要根据 ServiceDate 列创建 WeekDateRange 列。
每个 WeekDateRange 值应以星期一日期开始,以与 ServiceDate 关联的星期日日期结束,格式为 (mm/dd/yyyy - mm/dd/yyyy)。
SELECT s.ServiceDate
FROM ServiceInfo AS s
ServiceDate
2022-01-03
2022-01-07
2022-01-15
2022-01-26
2022-01-29
2022-02-01
2022-02-04
2022-02-06
2022-02-07
我尝试使用以下查询,但是 2022-02-06 ServiceDate 分配给 02/07/2022 - 02/13/2022 周。
SELECT s.ServiceDate,
CONCAT(CONVERT(VARCHAR, DATEADD(DAY, 2 - DATEPART(WEEKDAY,
s.ServiceDate), CAST(s.ServiceDate AS DATE)), 101),
' - ', CONVERT(VARCHAR, DATEADD(DAY, 8 - DATEPART(WEEKDAY,
s.ServiceDate), CAST(s.ServiceDate AS DATE)), 101)) AS
WeekDateRange
FROM ServiceInfo AS s
输出:
ServiceDate
WeekDateRange
2022-01-03
01/03/2022 - 01/09/2022
2022-01-07
01/03/2022 - 01/09/2022
2022-01-15
01/10/2022 - 01/16/2022
2022-01-26
01/24/2022 - 01/30/2022
2022-01-29
01/24/2022 - 01/30/2022
2022-02-01
01/31/2022 - 02/06/2022
2022-02-04
01/31/2022 - 02/06/2022
2022-02-06
02/07/2022 - 02/13/2022 (Needs to be 01/31/2022 - 02/06/2022)
2022-02-07
02/07/2022 - 02/13/2022
您可以使用星期一作为参考日期来计算天数差异。执行整数除以 7,然后乘以 7 将返回周一开始的天数
1st Jan, 1900
是星期一,开始日期:
DATEADD(DAY, DATEDIFF(DAY, '19000101', s.ServiceDate) / 7 * 7, '19000101')
对于结束日期,只需将天数差加上 1 周,然后从 31 Dec 1899
的参考日期减去 1 天
DATEADD(DAY, (DATEDIFF(DAY, '19000101', s.ServiceDate) / 7 + 1) * 7, '18991231')
我需要根据 ServiceDate 列创建 WeekDateRange 列。 每个 WeekDateRange 值应以星期一日期开始,以与 ServiceDate 关联的星期日日期结束,格式为 (mm/dd/yyyy - mm/dd/yyyy)。
SELECT s.ServiceDate
FROM ServiceInfo AS s
ServiceDate |
---|
2022-01-03 |
2022-01-07 |
2022-01-15 |
2022-01-26 |
2022-01-29 |
2022-02-01 |
2022-02-04 |
2022-02-06 |
2022-02-07 |
我尝试使用以下查询,但是 2022-02-06 ServiceDate 分配给 02/07/2022 - 02/13/2022 周。
SELECT s.ServiceDate,
CONCAT(CONVERT(VARCHAR, DATEADD(DAY, 2 - DATEPART(WEEKDAY,
s.ServiceDate), CAST(s.ServiceDate AS DATE)), 101),
' - ', CONVERT(VARCHAR, DATEADD(DAY, 8 - DATEPART(WEEKDAY,
s.ServiceDate), CAST(s.ServiceDate AS DATE)), 101)) AS
WeekDateRange
FROM ServiceInfo AS s
输出:
ServiceDate | WeekDateRange |
---|---|
2022-01-03 | 01/03/2022 - 01/09/2022 |
2022-01-07 | 01/03/2022 - 01/09/2022 |
2022-01-15 | 01/10/2022 - 01/16/2022 |
2022-01-26 | 01/24/2022 - 01/30/2022 |
2022-01-29 | 01/24/2022 - 01/30/2022 |
2022-02-01 | 01/31/2022 - 02/06/2022 |
2022-02-04 | 01/31/2022 - 02/06/2022 |
2022-02-06 | 02/07/2022 - 02/13/2022 (Needs to be 01/31/2022 - 02/06/2022) |
2022-02-07 | 02/07/2022 - 02/13/2022 |
您可以使用星期一作为参考日期来计算天数差异。执行整数除以 7,然后乘以 7 将返回周一开始的天数
1st Jan, 1900
是星期一,开始日期:
DATEADD(DAY, DATEDIFF(DAY, '19000101', s.ServiceDate) / 7 * 7, '19000101')
对于结束日期,只需将天数差加上 1 周,然后从 31 Dec 1899
DATEADD(DAY, (DATEDIFF(DAY, '19000101', s.ServiceDate) / 7 + 1) * 7, '18991231')