我需要計算兩個日期之間的包含周數(即使下周只有 1 天(周從周一開始,周日結束),也將其計為周數)。
如果我使用常規 datediff,兩者的輸出都是 2。
SELECT datediff(ww, '2022-03-01','2022-03-13')
SELECT datediff(ww, '2022-03-14','2022-03-31')
但我需要獲得 2 和 3 周數:
| 從日期 | 迄今為止 | 預期的 |
|---|---|---|
| 2022-03-01 | 2022-03-13 | 在 2 周內下降(02/28/2022 - 03/06/2022 和 03/07/2022 - 03/13/2022) |
| 2022-03-14 | 2022-03-31 | 在 3 周內下降(03/14/2022 - 03/20/2022、03/21/2022 - 03/27/2022 和 03/28/2022 - 04/03/2022) |
uj5u.com熱心網友回復:
這是一個解決方案。NB SQL 服務器將星期日視為一周的第一天。如果我們希望將星期一算作一周的第一天,我們必須從日期中洗掉一天,就像在第二個查詢中一樣。
CREATE TABLE dates ( From_Date date, To_Date date); INSERT INTO dates VALUES ('2022-03-01','2022-03-13'), ('2022-03-14','2022-03-31');
SELECT From_Date , DATENAME(ww, From_Date) FromWeek, To_Date, DATENAME(ww, To_Date) ToWeek, 1 CAST( DATENAME(ww, To_Date) AS INT) - CAST( DATENAME(ww, From_Date) AS INT) WeekDiff FROM dates;從_日期 | 從周 | To_Date | 周刊 | 周差 :--------- | :------- | :--------- | :----- | --------: 2022-03-01 | 10 | 2022-03-13 | 12 | 3 2022-03-14 | 12 | 2022-03-31 | 14 | 3
SELECT From_Date , DATENAME(ww, From_Date) FromWeek, To_Date, DATENAME(ww, To_Date) ToWeek, 1 CAST( DATENAME(ww, DATEADD(day, -1, To_Date)) AS INT) - CAST( DATENAME(ww, DATEADD(day, -1, From_Date)) AS INT) WeekDiff FROM dates;從_日期 | 從周 | To_Date | 周刊 | 周差 :--------- | :------- | :--------- | :----- | --------: 2022-03-01 | 10 | 2022-03-13 | 12 | 2 2022-03-14 | 12 | 2022-03-31 | 14 | 3
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456370.html
