我目前正在尝试将这个查询放到Visual中
DECLARE @StartDate date
SELECT @StartDate = GETDATE();
WITH cte AS
(
SELECT -1 AS idx, DATEADD(d,-1,@StartDate) AS idxDate
UNION ALL
SELECT idx -1, DATEADD(d,-1,idxDate)
FROM cte
WHERE idx >-365
)
SELECT idx DateValue, CONVERT(VARCHAR (11),idxDate,109) + ', ' + CAST
(idx as nvarchar(max)) DateLabel
FROM CTE
OPTION (MAXRECURSION 0) 然而,我发现这个错误说
nvarchar is invalid for argument 2 of dateadd function
这里有什么不对劲吗?
发布于 2021-04-19 10:26:04
我知道它和旧的帖子,但这个答案也会帮助其他人。
当将PHP参数与query绑定时,我也面临同样的错误消息,问题是它需要按错误消息中的话进行第二个参数的类型转换。
DATEADD(dd, :lifetime_days, GETUTCDATE())SQLSTATE[HY000]: General error: 20018 Argument data type varchar is invalid for argument 2 of dateadd function. [20018] DATEADD(dd, :lifetime_days, CONVERT(CHAR(19), GETUTCDATE(), 20))SQLSTATE[HY000]: General error: 20018 Argument data type varchar is invalid for argument 2 of dateadd function. [20018]最后,当我将绑定参数强制转换为Integer时,它可以工作,因为在您的示例中,lifetime_days是一个绑定参数,它可以像@time一样是一个SQL变量。有时,它可能会将第二个参数考虑为字符串,在该场景中,它需要转换为int。
DATEADD(dd, CAST(:lifetime_days AS int), CONVERT(CHAR(19), GETUTCDATE(), 20))希望它能帮助您对此错误消息进行排序。
https://stackoverflow.com/questions/17601739
复制相似问题