Report Builder 在递归 CTE 中抛出类型不匹配的错误

Report Builder throws error over types mismatch in recursive CTE

我正在使用我发现的递归 CTE here 来获取范围内的日期:

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

我知道 DATEADD returns SMALLDATETIME,我虽然 Report Builder 将 DATETIME 传递给 @DateFrom 所以我想 CASTing return DATEADDDATETIME 的值将解决它,但它没有。

我在这里错过了什么?

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

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);