在資料庫的運用過程中,我們時常會碰到根據身份證號碼來獲取當前的年齡,今天我在這裡寫了一個函數,就是關於獲取年齡的 下麵是函數調用的SQL語句: ...
在資料庫的運用過程中,我們時常會碰到根據身份證號碼來獲取當前的年齡,今天我在這裡寫了一個函數,就是關於獲取年齡的
create or replace function FUNC_COMPARE_SFZHM( sfzhm in varchar2) --輸入身份證號碼 return number /* 函數說明,返回值0為小於18歲;值為1是大於75歲;其他情況是返回值為2 在這個函數里用到了trunc(months_between()) 然後就是將身份證號碼里的年月日組合成'yyyy-mm-dd'格式,但是在SQL里拼接用的是"||",而不是"+",這個值得註意 */ is begin if Trunc(MONTHS_BETWEEN(to_date(to_char(sysdate, 'yyyy-MM-dd'),'yyyy-MM-dd'),to_date(substr(sfzhm,7,4)||'-'||substr(sfzhm,11,2)||'-'||substr(sfzhm,13,2), 'yyyy-MM-dd')) / 12) < 18 then return 0; elsif Trunc(MONTHS_BETWEEN(to_date(to_char(sysdate, 'yyyy-MM-dd'),'yyyy-MM-dd'),to_date(substr(sfzhm,7,4)||'-'||substr(sfzhm,11,2)||'-'||substr(sfzhm,13,2), 'yyyy-MM-dd')) / 12) >75 then return 1; else return 2; end if; end;
下麵是函數調用的SQL語句:
select func_compare_sfzhm('310103200003141234') from dual;