1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Truy vấn phân cấp và đệ quy trong SQL Server

Connected

Bài tập

Tạo chuỗi thời gian cho một năm

Mục tiêu của bài tập này là tạo một chuỗi các ngày cho một năm. Để làm việc này, bạn cần dùng hai hàm thời gian/ngày sau:

  • GETDATE()
  • DATEADD(datepart, number, date)

Với GETDATE() bạn lấy thời điểm hiện tại (ví dụ: 2019-03-14 20:09:14) và với DATEADD(month, 1, GETDATE()) bạn sẽ có ngày hiện tại cộng thêm một tháng (ví dụ: 2019-04-14 20:09:14).

Để có chuỗi các ngày cho một năm, bạn cần 365 bước đệ quy. Vì vậy, hãy tăng số vòng lặp bằng OPTION (MAXRECURSION n) trong đó n là số vòng lặp.

Hướng dẫn

100 XP
  • Khởi tạo thời điểm hiện tại là time.
  • Chọn CTE theo cách đệ quy và kết hợp phần neo (anchor) và phần đệ quy bằng mệnh đề phù hợp.
  • Giới hạn số vòng lặp bằng số ngày trong một năm trừ 1.
  • Tăng số vòng lặp tối đa lên bằng số ngày trong một năm với OPTION (MAXRECURSION n).