Bir yılın zaman serisini oluştur
Bu egzersizin amacı, bir yıl için günlerden oluşan bir seri oluşturmaktır. Bu görev için aşağıdaki iki zaman/tarih fonksiyonunu kullanmalısın:
GETDATE()DATEADD(datepart, number, date)
GETDATE() ile geçerli zamanı elde edersin (ör. 2019-03-14 20:09:14) ve DATEADD(month, 1, GETDATE()) ile geçerli tarihe bir ay eklenmiş hâlini alırsın (ör. 2019-04-14 20:09:14).
Bir yılın günlerinden oluşan bir seri elde etmek için 365 özyineleme adımı gerekir.
Bu nedenle yineleme sayısını, n yineleme sayısını temsil edecek şekilde OPTION (MAXRECURSION n) ile artır.
Bu egzersiz
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular
kursunun bir parçasıdırEgzersiz talimatları
- Geçerli zamanı
timeolarak başlat. - CTE'yi özyinelemeli olarak seç ve çapa (anchor) ile özyinelemeli üyeyi doğru ifade ile birleştir.
- Yineleme sayısını yıldaki gün sayısı eksi 1 ile sınırla.
- Azami yineleme sayısını
OPTION (MAXRECURSION n)ile yıldaki gün sayısına yükselt.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
WITH time_series AS (
SELECT
-- Get the current time
___ AS time
UNION ALL
SELECT
DATEADD(day, 1, time)
-- Call the CTE recursively
FROM ___
-- Limit the time series to 1 year minus 1 (365 days -1)
WHERE time < GETDATE() + ___)
SELECT time
FROM time_series
-- Increase the number of iterations (365 days)
OPTION(MAXRECURSION ___)