Questa query T-SQL restituisce la data di inizio e fine settimana di una data passata (@dtDay)

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 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

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
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
Tags:
SQL90 SQL Server100 T-SQL66
Potrebbe interessarti anche: