1. 程式人生 > >SQL 根據身份證號碼獲取年齡的函數

SQL 根據身份證號碼獲取年齡的函數

else months clas BE HA 格式 拼接 返回 weight

在數據庫的運用過程中,我們時常會碰到根據身份證號碼來獲取當前的年齡,今天我在這裏寫了一個函數,就是關於獲取年齡的

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;

SQL 根據身份證號碼獲取年齡的函數