身份证判断出生日期和性别

select ceil(months_between(sysdate,birthday)/12) as age,
decode(mod(sex,2),0,’女’,1,’男’,'其他’)as sex
from
(select to_date(decode(length(a),15,’19′||SUBSTR(a,7,6),18,SUBSTR(a,7,8)),’yyyy-mm-dd’)as birthday,
case when length(a)=15
then SUBSTR(a,length(a))
when length(a)=18
then SUBSTR(a,length(a)-1,1)
end as sex
from
(select ’441900198806221354′ as a from dual
union all
select ’111222198010103334′ from dual
union all
select ’111222651010553′ from dual))
–15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位为出生日,第15位为性别,奇数为男,偶数为女
–18位身份证号码:第7-10位为出生年份(四位数),第11、12位为出生月份,第13、14位为出生日,第17位为性别,奇数为男,偶数为女

你可能感兴趣的:(身份证判断出生日期和性别)