sqlserver
if len(@idcard) = 15 OR len(@idcard) = 18
begin
set @var1=''
if LEN(@idcard)=15
begin
set @var1 =SUBSTRING(@idcard,15,1)
set @birthday='19' +SUBSTRING(@idcard,7,2)+'-' +SUBSTRING(@idcard,9,2) +'-' +SUBSTRING(@idcard,11,2)
end
else
begin
set @var1 =SUBSTRING(@idcard,17,1)
set @birthday=SUBSTRING(@idcard,7,4) +'-' +SUBSTRING(@idcard,11,2) +'-' +SUBSTRING(@idcard,13,2)
end
set @age= round (( DATEDIFF(day,@birthday,getdate())/ 365),0)
end
Oracle
if length(vcardid) = 15 OR length(vcardid) = 18 then
begin
if length(vcardid) = 18 then
begin
select TRUNC (( sysdate- TO_DATE (SUBSTR (vcardid, 7, 8), 'yyyy-mm-dd') )/ 365) into v_card_nl from dual;
select SUBSTR (vcardid, 7, 8) into V_csrq from dual;--出生日期
end;
else
begin
select TRUNC (( sysdate- TO_DATE ('19' || SUBSTR (vcardid, 7, 6), 'yyyy-mm-dd') )/ 365) into v_card_nl from dual;
end;
end if;
end;
end if;