Buat deret waktu selama satu tahun
Tujuan latihan ini adalah membuat deret hari selama satu tahun. Untuk tugas ini Anda harus menggunakan dua fungsi waktu/tanggal berikut:
GETDATE()DATEADD(datepart, number, date)
Dengan GETDATE() Anda mendapatkan waktu saat ini (misalnya 2019-03-14 20:09:14) dan dengan DATEADD(month, 1, GETDATE()) Anda mendapatkan tanggal saat ini ditambah satu bulan (misalnya 2019-04-14 20:09:14).
Untuk mendapatkan deret hari selama satu tahun, Anda memerlukan 365 langkah rekursi.
Oleh karena itu, tingkatkan jumlah iterasi dengan OPTION (MAXRECURSION n) di mana n merepresentasikan jumlah iterasi.
Latihan ini adalah bagian dari kursus
Kueri Hierarkis dan Rekursif di SQL Server
Petunjuk latihan
- Inisialisasi waktu saat ini sebagai
time. - Pilih CTE secara rekursif dan gabungkan anchor dan anggota rekursif dengan pernyataan yang benar.
- Batasi jumlah iterasi menjadi jumlah hari dalam satu tahun dikurangi 1.
- Tingkatkan jumlah maksimum iterasi menjadi jumlah hari dalam satu tahun dengan
OPTION (MAXRECURSION n).
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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 ___)