日期:2014-05-19  浏览次数:20548 次

如何根据身份证号,求出出生日期呀?
如何根据身份证号,求出出生日期呀?

------解决方案--------------------
select case when len(身份证号)=15 then '19 ' + substring(身份证号,7,2)+ '/ '+substring(身份证号,9,2)+ '/ '+substring(身份证号,11,2)
when len(身份证号)=18 then substring(身份证号,7,4)+ '/ '+substring(身份证号,11,2)+ '/ '+substring(身份证号,13,2)
else ' ' end as 出生日期 from 表名

------解决方案--------------------
新的身份证的的数字构成是
在18位数字中 前6位是地址码,接着的8位是生日码,接着的2位为顺序码
再接着的一位是顺序性别码(既是包含在顺序码中有代表了性别,单数为男性双数为女性)
最后一位是校验码~~~~~

15位身份证比18位少的3位是:出生年份只取两位(如87),没有校验码

希望这些信息对你有帮助~~

我写了个基本存储过程,有必要你可以修改的~~
create proc spidcardnumberTObirthday
@IdNumber nvarchar(18)= '000000000000000000 '
as
declare @birthnumber nvarchar(8)
if (len(@IdNumber)=18) begin
select @birthnumber=substring(@IdNumber,7,8)
print '该身份证持有者的生日为: '+substring(@birthnumber,1,4)+ '年 '+
substring(@birthnumber,5,2)+ '月 '+substring(@birthnumber,7,2)+ '日 '
end
else if (len(@IdNumber)=15) begin
select @birthnumber=substring(@IdNumber,7,6)
print '该身份证持有者的生日为: '+substring(@birthnumber,1,2)+ '年 '+
substring(@birthnumber,3,2)+ '月 '+substring(@birthnumber,5,2)+ '日 '
end
else
print '身份证号码不合法 '


thank you ~~~~