sql >> Base de Datos >  >> RDS >> Sqlserver

Calcule todos los domingos, lunes ... sábados entre dos días en SQL Server

Creo que su consulta ofrece el resultado correcto, pero podría simplificarse un poco.

Sin embargo, depende de SET DATEFIRST ajuste.

datepart(dw,[Date]) = 1 contará el número de lunes si SET DATEFIRST es 1.

Prueba esto:

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

Resultado:

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

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

Actualización: Otra consulta que hace lo mismo.

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