select *,convert(datetime,substring(Col008,1,8))as Col008 from s2
此种常用转换方式仍然有限制性,例如在数据库把字段更新成datetime时,不能精确求出分秒,或者有越界产生。
所以可以用下面的方式进行完整的时间转换
update s12 set Col008=cast
(cast(substring (Col008,1,4) as varchar)+ '- '
+cast(substring (Col008,5,2) as varchar)+ '- '
+cast(substring (Col008,7,2) as varchar)+ ' '
+cast(substring (Col008,9,2) as varchar)+': '+
cast(substring (Col008,11,2) as varchar)+ ': '+
cast(substring (Col008,13,2) as varchar)+ '. '+
cast('000' as varchar) as datetime)
或直接生成一张新表select
convert(datetime,substring(convert(char(8),[Col006]),1,4)+'.'
+substring(convert(char(8),[Col006]),5,2)+'.'
+substring(convert(char(8),[Col006]),7,2)+''
+substring(convert(char(20),[Col006]),9,2)+':'
+substring(convert(char(20),[Col006]),11,2)+':'
+substring(convert(char(20),[Col006]),13,2))[Col006],[Col001],[Col002],[Col003],[Col004],[Col005]
INTO [dbo].[43969]
from [dbo].[s111]