Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottieni il numero di fine settimana tra due date in SQL

Ho provato questa logica con diversi casi limite e sembra funzionare.

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

È possibile modificare le istruzioni CASE a seconda di come si desidera gestire i casi in cui la data di inizio o di fine è in un fine settimana. Nel mio caso non includo il fine settimana se la data di inizio o di fine è un sabato o una domenica.