1

我在存储过程中使用交叉应用将日期范围扩展到单个日期。

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是以前接受的答案。

我的问题是查询永远运行并且不返回。

非常感谢,

4

1 回答 1

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)
于 2012-05-22T19:36:23.860 回答