日期:2014-05-17  浏览次数:20340 次

从字符串向 datetime 转换时失败。
declare @SQL_update nvarchar(2048) 
declare @sheetno nvarchar(10)
declare @calltimereal datetime


set @SQL_update = 'update #t set ' + substring(@SQL_update,2,len(@SQL_update)) + ' where [维修单号]=''' + @sheetno + '''  and [回访时间] = cast ('''+ @calltimereal+''' as datetime)'

exec sp_executesql @SQL_update

抱错
从字符串向 datetime 转换时失败。

该如何转换呢?
sql 字符串

------解决方案--------------------
字符串的格式不对吧
------解决方案--------------------
set @SQL_update = 'update #t set ' + substring(@SQL_update,2,len(@SQL_update)) + ' where [维修单号]=''' + @sheetno + '''  and [回访时间] = cast ('''+ Convert(varchar(19),@calltimereal,120)+''' as datetime)'
------解决方案--------------------
看一下@calltimereal的真正值是什么。报错的结果显示这个值无法转换成时间类型。 
------解决方案--------------------
首先我想问下 这个SQL(@SQL_update)成立么? 咋看着不对啊.
------解决方案--------------------
set @SQL_update = 'update #t set ' + substring(@SQL_update,2,len(@SQL_update)) + ' where [维修单号]=''' + @sheetno + '''  and [回访时间] = cast ('''+ convert(varchar,@calltimereal,121)+''' as datetime)'

执行时不在数据匹配时转换也行,数据库会自动隐式转换
set @SQL_update = 'update #t set ' + substring(@SQL_update,2,len(@SQL_update)) + ' where [维修单号]=''' + @sheetno + '''  and [回访时间] = '''+ convert(varchar,@calltimereal,121)+''' '