declare @num varchar(20) ='42092319981020301X'select case when len(@num)= 18 then CAST( substring (@num,7,8) AS date ) else CAST( substring (@num,7,8) AS date ) end 15 位身份证你要看出生日期是从多少位开始截取的 修改 else 。。。 后面的字符串截取值