Calcolo inizio e fine settimana in T-SQL
Questa query T-SQL restituisce la data di inizio e fine settimana di una data passata (@dtDay)
Avendo inizio e fine settimana si può riempire una tabella con le date dei giorni
il risultato è questo
T-SQL: Calcola inizio e fine settimana
DECLARE @dtDay date
SET @dtDay = '2022-02-01' -- oppure GETDATE()
SET DATEFIRST 1 -- lunedì
DECLARE @weekday int = DATEPART(weekday, @dtDay) -1;
DECLARE @weekBegin date = DateAdd(d, -@weekday, @dtDay)
DECLARE @weekEnd date = DateAdd(d, 6, @weekBegin)
SELECT @dtDay As [InputDay], @weekday AS [Weekday], @weekBegin AS [WeekBegin], @weekEnd AS [WeekEnd]
La query considera il Lunedì come giorno di inizio della settimana (SET DATEFIRST 1).
da come risultatoInputDay;Weekday;WeekBegin;WeekEnd 2022-02-01;1;2022-01-31;2022-02-06
Avendo inizio e fine settimana si può riempire una tabella con le date dei giorni
T-SQL: Genera tabella date della settimana
DECLARE @tbl TABLE (
[Id] int not null identity(1,1),
[Day] date not null
)
DECLARE @dtInc date = @weekBegin
WHILE @dtInc <= @weekEnd
BEGIN
INSERT INTO @tbl VALUES(@dtInc)
SET @dtInc = DATEADD(day, 1, @dtInc)
END
SELECT * FROM @tbl
Id;Day 1;2022-01-31 2;2022-02-01 3;2022-02-02 4;2022-02-03 5;2022-02-04 6;2022-02-05 7;2022-02-06