0

我正在使用在这里找到的递归 CTE 来获取某个范围内的日期:

WITH T(d)
AS
( 
SELECT @DateFrom 
UNION ALL
SELECT CAST(DateAdd(DD,1,T.d) AS DATETIME) FROM T WHERE T.d < @DateTo
)
SELECT d FROM T OPTION (MAXRECURSION 32767);

此 CTE 在我的 SQL Server 上运行良好,但是当尝试在 Report Builder 3.0 中使用此查询创建数据集时,我得到了“定义查询参数”对话框(我通常不会得到),单击“确定”后出现错误:Types don't match between the anchor and the recursive part in column "d" of recursive query "T".

我知道return ,我虽然 Report Builder 传递了进去 ,所以我认为将返回值转换DATEADD为a会解决它,但它没有。SMALLDATETIMEDATETIME@DateFromDATEADDDATETIME

我在这里想念什么?

4

1 回答 1

1

只是预感,请尝试以下操作:-

WITH T(d)
AS
( 
SELECT cast(@DateFrom as datetime) as d
UNION ALL
SELECT CAST(DateAdd(DD,1,T.d) AS DATETIME) FROM T WHERE T.d < @DateTo
)
SELECT d FROM T OPTION (MAXRECURSION 32767);
于 2016-01-25T14:43:08.310 回答