SQL 根据身份证号码获取年龄的函数

Posted 阴阳家少司命

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

 

以上是关于SQL 根据身份证号码获取年龄的函数的主要内容,如果未能解决你的问题,请参考以下文章

怎样根据身份证号码计算年龄?

如何写在身份证号码中提取年龄的sql语句

如何写在身份证号码中提取年龄的sql语句

IOS 根据身份证号码获取 年龄 生日 性别

用身份证号码怎么计算年龄?

表格中如何根据身份证号提取前6位的行政代码数字