【发布时间】:2009-09-08 17:54:39
【问题描述】:
我需要创建一个返回连续日期表的函数。我会传入一个最小和最大日期。
我希望它可以这样调用:
SELECT * FROM GetDates('01/01/2009', '12/31/2009')
我目前有一个执行此操作的存储过程,但要求发生了变化,现在我需要在联合中包含返回的数据:
with mycte as
(
select cast(@minDate as datetime) DateValue
union all
select DateValue + 1
from mycte
where DateValue + 1 <= @maxDate
)
select DateValue
from mycte
option (maxrecursion 1000)
但是,问题是我需要将递归设置为大于 100。根据 Gail Erickson [MS] 在 eggheadcafe 上的帖子,目前不支持此功能。
如果不创建一个真正的(不是临时的)表,其中只有日期,有没有办法做到这一点?
我正在使用 SqlServer2005。
【问题讨论】:
-
可以将递归级别设置为高于 100 的值。如果我没记错的话,支持的最大级别是 2^15。
标签: sql sql-server sql-server-2005 tsql