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

Obtenir le nombre de week-ends entre deux dates en SQL

J'ai essayé cette logique avec plusieurs cas extrêmes et cela semble fonctionner.

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

Vous pouvez modifier les instructions CASE en fonction de la façon dont vous souhaitez gérer les cas où la date de début ou de fin se situe dans un week-end. Dans mon cas, je n'inclus pas le week-end si la date de début ou de fin est un samedi ou un dimanche.