当前位置: 代码迷 >> Sql Server >> 从字符串向 datetime 变换时失败
  详细解决方案

从字符串向 datetime 变换时失败

热度:3539   发布时间:2013-02-26 00:00:00.0
从字符串向 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)+''' '
  相关解决方案