Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Berechnen Sie alle Sonntage,Montage...Samstage zwischen zwei Tagen in SQL Server

Ich denke, Ihre Abfrage liefert das richtige Ergebnis, könnte aber etwas vereinfacht werden.

Es ist jedoch abhängig von SET DATEFIRST Einstellung.

datepart(dw,[Date]) = 1 zählt die Anzahl der Montage, wenn SET DATEFIRST ist 1.

Versuchen Sie Folgendes:

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

Ergebnis:

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

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

Aktualisierung: Eine weitere Abfrage, die dasselbe tut.

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