数据更新转换的问题
在一个表里,有个身份证字段,出生年月字段,   我现在通过前一个字段提取后一个字段所需的数据,前面是字符型,后面是日期型,我在更新的时候加上了‘   -’作为年月日的连接,如:340403195503031434   更新另一字段为1955-03-03 
 结果出现:从   char   数据类型到   datetime   数据类型的转换导致   datetime   值越界。 
       感觉程序写的对的啊,是怎么回事啊
------解决方案--------------------declare @a table(UserID nvarchar(18),Birthday datetime) 
 insert @a(UserID) select  '340403195503031434 ' 
 insert @a(UserID) select  '340403198003031434 ' 
 insert @a(UserID) select  '340403880102101 '   
 select * from @a 
 update @a 
 set Birthday = case when len(UserID) = 18 then convert(char(10),substring(UserID,7,8),120) 
                else convert(char(10), '19 ' + substring(UserID,7,6),120) end   
 select * from @a
------解决方案--------------------declare @s as varchar(30) 
 declare @tmp as varchar(20) 
 ----只写了身份证为18位的,你自己加下条件判断吧 
 set @s =  '340403195503031434 ' 
 set @tmp =substring(@s,7,8) 
 select cast(left(@tmp , 4) +  '- ' + substring(@tmp,5,2) +  '- ' + substring(@tmp,7,2) as datetime)