Saya mencoba logika ini dengan beberapa kasus tepi dan tampaknya berhasil.
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
Anda dapat mengubah pernyataan CASE tergantung pada bagaimana Anda ingin menangani kasus di mana tanggal mulai atau akhir adalah di akhir pekan. Dalam kasus saya, saya tidak menyertakan akhir pekan jika tanggal mulai atau akhir adalah hari Sabtu atau Minggu.