我目前正在尝试将此查询放入Visual Studio
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
这里有什么问题吗?
答案 0 :(得分:0)
我知道这是旧帖子,但这个答案也会对其他人有所帮助。
在将 PHP 参数与查询绑定时,我遇到了同样的错误消息问题,问题是它需要像错误消息中所说的那样输入第二个参数。
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]
最后,当我将绑定参数强制转换为整数时,它就可以工作了,因为在您的情况下,lifetime_days 是一个绑定参数,它可能是一个 SQL 变量,如@time。有时它可能会将第二个参数视为字符串,在这种情况下它需要转换为 int。
DATEADD(dd, CAST(:lifetime_days AS int), CONVERT(CHAR(19), GETUTCDATE(), 20))
希望它能帮助您整理此错误消息。