İki Tarih Arasındaki Tarihleri Listeleme

Şaheste Akpınar
BilgeAdam Teknoloji
2 min readJul 25, 2023

İki tarih aralığında tuttuğumuz verileri günlük olarak kayıt altına almak isteyebileceğimiz durumlar olabilir.

Belli tarih aralığındaki kampanya verileri, bir çalışanın izin verileri, hedef-prim verileri gibi verileri raporlamada günlük olarak incelemek istediğimizde date kurguları modelde soruna yol açabilir. Bu yüzden bazı müdahaleler yapılması gerekir.

SQL Database’de aşağıdaki şekilde StartDate,EndDate tarihleri ve arasındaki gün sayısını tuttuğumuz bir tablomuz var.

Aşağıdaki tablo gibi görünmesi için database tarafında ne yapabiliriz onu inceleyeceğiz.

Cursor kullanarak tablomuzdan verileri satırsal alacağız. Daha sonrasında Fetch Next kullanarak döngü oluşturacağız. Döngüde yapacağımız işlemler sonrası, verileri yeni oluşturacağımız tabloya insert edeceğiz. Aşağıda kodları inceleyebilirsiniz. İyi çalışmalar!


DECLARE @X_No int
,@StartDate DATETIME
,@EndDate DATETIME
,@Dates DATETIME


--Cursor veriyi satırsal getirmek için kullanılır.

DECLARE XCursor CURSOR FOR
SELECT X_No,[Start Date],[End Date] FROM [dbo].[X_Dates]
ORDER BY X_No;


OPEN XCursor;


FETCH NEXT FROM XCursor
INTO @X_No,@StartDate,@EndDate; --İlk dönen satırı tabloya atması için



WHILE @@FETCH_STATUS = 0
BEGIN

WHILE(@StartDate<=@EndDate)

BEGIN
SET @Dates=@StartDate

INSERT INTO dbo.XAllDates (XNo,Dates,Day) --Verileri aktaracağımız yeni tablo
SELECT @X_No,@Dates,1

SELECT @StartDate=dateadd(day,1,@StartDate) --Dates alanı

END

--Diğer satıra geçer
FETCH NEXT FROM XCursor
INTO @X_No,@StartDate,@EndDate

END

CLOSE XCursor;
DEALLOCATE XCursor; --Cursor için ayrılan belleği boşaltır

--

--