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

Rufen Sie die Anzahl der Wochenenden zwischen zwei Daten in SQL ab

Ich habe diese Logik mit mehreren Grenzfällen ausprobiert und sie scheint zu funktionieren.

SELECT DATEDIFF(d, @dFrom, @dTo)/7+1
    + CASE WHEN DATEPART(dw,@dFrom) IN (1,7) THEN -1 ELSE 0 END
    + CASE WHEN DATEPART(dw,@dTo) IN (1,7) THEN -1 ELSE 0 END

Sie können die CASE-Anweisungen ändern, je nachdem, wie Sie Fälle behandeln möchten, bei denen das Start- oder Enddatum auf ein Wochenende fällt. In meinem Fall beziehe ich das Wochenende nicht mit ein, wenn das Start- oder Enddatum ein Samstag oder Sonntag ist.