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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM