Questa query
T-SQL restituisce la data di inizio e fine settimana di una data passata (@dtDay)
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 risultato
InputDay;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
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
il risultato è questo
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