我在存储过程中使用交叉应用程序将日期范围扩展到各个日期。
select *
from #tbl_tempOutPut as st
cross apply dbo.explodeDates(st.startdate,st.enddate) as dt
表#tbl_tempOutPut看起来像这样:
ID Des startdate enddate kindex
A att 2003-12-04 2004-01-03 1
A att 2004-01-04 2004-02-03 1
函数dbo.explodeDates是之前接受的答案。
我的问题是查询会永远运行而不会返回。
非常感谢,
答案 0 :(得分:2)
将explodeDates
重写为内联表值函数。这几乎肯定会带来巨大的变化。
CREATE FUNCTION dbo.explodeDates (
@StartDate char(10),
@EndDate char(10)
) RETURNS TABLE AS RETURN SELECT
CONVERT(datetime,@StartDate)+n-1 AS [Date]
FROM Numbers
WHERE Number <= DATEDIFF(day,@StartDate,CONVERT(datetime,@EndDate)+1)