Nat*_*oop 5 sql t-sql sql-server sql-server-2005
我需要创建一个返回连续日期表的函数.我会传递一个最小和最大日期.
我希望它可以这样调用:
SELECT * FROM GetDates('01/01/2009', '12/31/2009')
Run Code Online (Sandbox Code Playgroud)
我目前有一个存储过程执行此操作,但需求已更改,现在我需要包括从联合中返回的数据:
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)
Run Code Online (Sandbox Code Playgroud)
然而,问题是我需要将递归设置为大于100.根据Gail Erickson [MS]关于eggheadcafe的帖子,目前不支持.
如果没有创建一个只有日期的真实(非临时)表,有没有办法做到这一点?
我使用的是SqlServer2005.
您最好的选择是实际拥有一个物理日期表.即使很长一段时间也没有那么多,并且比从临时表或递归ctes中即时实现它们要快得多.