开始使用免费开始使用

创建一年的时间序列

本练习的目标是生成一整年的按天序列。为此,您需要使用以下两个时间/日期函数:

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

使用 GETDATE() 可获取当前时间(例如:2019-03-14 20:09:14),而使用 DATEADD(month, 1, GETDATE()) 可得到当前时间加 1 个月(例如:2019-04-14 20:09:14)。

要得到一年的按天序列,您需要进行 365 次递归。 因此,请通过 OPTION (MAXRECURSION n) 来增加迭代次数,其中 n 表示迭代次数。

本练习是课程的一部分

SQL Server 中的分层与递归查询

查看课程

练习说明

  • 将当前时间初始化为 time
  • 以递归方式选择 CTE,并使用正确的语句将锚点成员与递归成员合并。
  • 将迭代次数限制为一年中的天数减 1。
  • 使用 OPTION (MAXRECURSION n) 将最大迭代次数提高到一年中的天数。

交互式实操练习

通过完成这段示例代码来试试这个练习。

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 ___)
编辑并运行代码