Bắt đầu ngayBắt đầu miễn phí

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.

Bài tập này là một phần của khóa học

Truy vấn phân cấp và đệ quy trong SQL Server

Xem khóa học

Hướng dẫn bài tập

  • 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).

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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 ___)
Chỉnh sửa và Chạy Mã