我有一个动态过程,其中输入变量可以是一个日期,其对应列的格式设置为日期时间,也可以是一个字符串,其对应列的格式设置为nvarchar。
如果输入的是日期,则看起来像yyyy-mm-dd。
为了解决这个问题,我尝试将以下内容添加到我的Where子句中,但这会产生以下错误(如果我删除此行,则该过程的其余部分将按预期工作):
@searchTerm nvarchar(256) = ''
-- ...
WHERE CASE WHEN ''' + @searchCategory + ''' <> ''dateX'' THEN
(A.' + @searchCategory + ' LIKE ''%' + @searchTerm + '%'')
ELSE
(A.dateX = ''' + CAST(@searchTerm AS DATETIME) + ''')
END
-- ...
错误:
Conversion failed when converting date and/or time from character string.
有人可以告诉我要进行这项工作我必须在此处进行更改吗?
谢谢你,迈克。
您不能将日期时间值放入字符串中。首先将其转换为日期时间,以将其转换为所需的格式,然后将其转换为Varchar,使其可以成为动态字符串的一部分。
(A.dateX = ''' + CAST(CAST(@searchTerm AS DATETIME) AS VARCHAR(20)) + ''')
或者,如果@searchTerm已经是您想要的格式,则无需强制转换
(A.dateX = @searchTerm)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句