SQL Server’da İki Tarih Arasındaki Çalışma Günlerini Hesaplamak

Herkese merhaba,

Bu yazıda SQL Server’da iki tarih arasındaki çalışma günlerini hesaplamak hakkında bilgi vermeye çalışacağım.

SQL Server’da bazı durumlarda iki tarih arasındaki çalışma günlerini hesaplamak isteyebilirsiniz.

Yazılan kodda cumartesi günü parametriktir. 0 ve 1 olma durumuna göre hesaplanan tarih değişir. 0 cumartesiyi dahil etme, 1 cumartesiyi yarım gün olarak dahil et demektir.

Aşağıdaki kodu kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.



DECLARE @baslangicTarihi AS DATE = '2021.10.23',
        @bitisTarihi AS DATE = '2021.10.31',
        @cumartesiDurum BIT = 1;

SELECT SUM(HesaplananIsGunu) AS HesaplananIsGunu
FROM
(
    SELECT CASE
               WHEN tblDayList.dayNameP = 'Saturday'
                    AND @cumartesiDurum = 1 THEN
                   0.5
               WHEN tblDayList.dayNameP != 'Saturday' THEN
                   1
               ELSE
                   0
           END AS HesaplananIsGunu
    FROM
    (
        SELECT n,
               DATEADD(DAY, n, @baslangicTarihi) tarihP,
               DATENAME(dw, DATEADD(DAY, n, @baslangicTarihi)) dayNameP
        FROM
        (
            SELECT DISTINCT
                   n = number
            FROM master..[spt_values]
            WHERE number
            BETWEEN 0 AND DATEDIFF(DAY, @baslangicTarihi, @bitisTarihi)
        ) tblNumbers
    ) tblDayList
    WHERE tblDayList.dayNameP != 'Sunday'
) TblEnd;

Yukarıdaki kod bloğunu çalıştırdığınızda aşağıdaki sonucu göreceksiniz.

SQL Server’da İki Tarih Arasındaki Çalışma Günlerini Hesaplamak

Görüldüğü üzere iki tarih arasındaki çalışma günlerini hesaplamış olduk.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

421 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!