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

Obtenga el número de fines de semana entre dos fechas en SQL

Probé esta lógica con varios casos extremos y parece funcionar.

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

Puede cambiar las sentencias CASE según cómo desee manejar los casos en los que la fecha de inicio o finalización es un fin de semana. En mi caso no incluyo el fin de semana si la fecha de inicio o fin es sábado o domingo.