Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Calculer tous les dimanches, lundis... samedis entre deux jours dans SQL Server

Je pense que votre requête donne le bon résultat, mais pourrait être un peu simplifiée.

Il dépend cependant de SET DATEFIRST réglage.

datepart(dw,[Date]) = 1 comptera le nombre de lundis si SET DATEFIRST est 1.

Essayez ceci :

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

Résultat :

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

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

Mise à jour : Une autre requête qui fait la même chose.

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