mssql2008express中
update baseinfo set chushengriqi=
convert(datetime,
''''+
+substring(CONVERT(char(4),shenfenzhenghao),7,4)+'-'
+substring(CONVERT(char(2),shenfenzhenghao),11,2)+'-'
+substring(CONVERT(char(2),shenfenzhenghao),13,2)+''''
)
where ShenFenZhengHao is not null
and len(ShenFenZhengHao)=18
老提示:
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
为什么呢?或者还有什么更简单的办法?
------解决方案--------------------
为什么不指中间那段SELECT出来看看是什么结果呢?
''''+
+substring(CONVERT(char(4),shenfenzhenghao),7,4)+'-'
+substring(CONVERT(char(2),shenfenzhenghao),11,2)+'-'
+substring(CONVERT(char(2),shenfenzhenghao),13,2)+''''
------解决方案--------------------
不用substring来substring去了。
直接取了那8位数,直接可以转成时间类型了。
------解决方案--------------------
加一个isdate识别一下,去除无效的数据
- SQL code
update baseinfo set chushengriqi = substring(shenfenzhenghao,7,4) + '-'+ substring(shenfenzhenghao,11,2) + '-'+ substring(shenfenzhenghao,13,2)where where ShenFenZhengHao is not nulland len(ShenFenZhengHao)=18and isdate(substring(shenfenzhenghao,7,4) + '-'+ substring(shenfenzhenghao,11,2) + '-'+ substring(shenfenzhenghao,13,2)) = 1