Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Calcola tutte le domeniche, i lunedì... i sabati tra due giorni in SQL Server

Penso che la tua query fornisca il risultato corretto, ma potrebbe essere leggermente semplificata.

Dipende tuttavia da SET DATEFIRST impostazione.

datepart(dw,[Date]) = 1 conterà il numero di lunedì se SET DATEFIRST è 1.

Prova questo:

set datefirst 7 -- Sunday
select datepart(dw, '20111227')
set datefirst 1 -- Monday
select datepart(dw, '20111227')

Risultato:

-----------
3

-----------
2

Aggiornamento: Un'altra query che fa lo stesso.

select count(*) as Daycount
from master..spt_values as Number
where Number.type = 'P' and
      dateadd(day, Number.number, @StartDate) <= @EndDate and
      datepart(dw, dateadd(day, Number.number, @StartDate)) = 1