【发布时间】:2022-02-08 10:31:47
【问题描述】:
我需要根据 ServiceDate 列创建 WeekDateRange 列。 每个 WeekDateRange 值应以 (mm/dd/yyyy - mm/dd/yyyy) 格式的 ServiceDate 相关联的星期一日期开始,并以星期日日期结束。
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 |
【问题讨论】:
标签: sql sql-server date concatenation