Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Obter o número de fins de semana entre duas datas no SQL


Eu tentei essa lógica com vários casos de borda e 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

Você pode alterar as instruções CASE dependendo de como deseja tratar os casos em que a data de início ou de término está em um fim de semana. No meu caso não estou incluindo o fim de semana se a data inicial ou final for sábado ou domingo.