写一个oracle 的自定义函数 : 根据身份证返回出生日期,急!
写一个oracle 的自定义函数 : 根据出生日期算年龄 急急急!
-- 传入date
create or replace function uf_get_age(v_bir date) return number is
begin
return floor(months_between(sysdate, v_bir)/ 12);
end;
-- 传入varchar
create or replace function uf_get_age(v_bir varchar2) return number is
begin
return to_char(sysdate, 'yyyy') - substr(v_bir, 1, 4)
- case when to_char(sysdate, 'mmdd') < substr(v_bir, 5, 4) then 1 else 0 end;
end;
oracle根据身份证号字段信息更新出生日期
身份证号分为15位和18位,处理方式略有不同,但也可以用一句sql语句来更新。
如test表中数据如下:
更新birthday字段的语句如下:
update test set birthday=case when length(sfz)=18 then substr(sfz,7,8) when length(sfz)=15 then '19'||substr(sfz,7,6) end;
commit;更新后结果:
oracle根据身份证字段信息,更新出生日期字段
身份证号码的长度分为15位和18位,改法不同,但在oracle中可用一句话来更新。
1、如shenfenzheng表中数据如下:
2、现要更新hiredate字段,使之为身份证号码信息中的出生日期。可用如下语句:
update shenfenzheng set hiredate=case when length(sfz_id)=18 then substr(sfz_id,7,8) else '19'||substr(sfz_id,7,6) end;
commit;3、更新后结果: