Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Calcular todos os domingos, segundas... sábados entre dois dias no SQL Server


Acho que sua consulta fornece o resultado correto, mas pode ser um pouco simplificada.

No entanto, depende de SET DATEFIRST contexto.

datepart(dw,[Date]) = 1 contará o número de segundas-feiras se SET DATEFIRST é 1.

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

Resultado:
-----------
3

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

Atualização: Outra consulta que faz o mesmo.
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