oracle 根据身份证号码与指定日期计算年龄

自定义函数:

sql 复制代码
CREATE OR REPLACE FUNCTION 获取年龄(身份证号 varchar2, 指定时间 date)
RETURN varchar2
AS
年龄 varchar2(16);
BEGIN
  if length(身份证号) >=18 then
    SELECT TRUNC(    MONTHS_BETWEEN(指定时间,     TO_DATE(SUBSTR(身份证号, 7, 8), 'YYYYMMDD')    )   / 12) || '岁' into 年龄 FROM DUAL;
    if 年龄 ='0岁' then
      SELECT TRUNC(MONTHS_BETWEEN(指定时间, TO_DATE(SUBSTR(身份证号, 7, 8), 'YYYYMMDD'))) || '个月' into 年龄 FROM DUAL;
      if 年龄 ='0个月' then
         SELECT (TRUNC(指定时间) - TO_DATE(SUBSTR(身份证号, 7, 8), 'YYYYMMDD')) || '天'  into 年龄 FROM DUAL;
         if 年龄 ='0天' then
            SELECT '1天'  into 年龄 FROM DUAL;
         end if;
      end if;
    end if;
  end if;
   RETURN 年龄;

END;

测试结果:

相关推荐
程序边界几秒前
MongoDB迁移到KES实战全纪录(上):迁移准备与实施指南
数据库·mongodb
weixin_421133419 分钟前
django xadmin 结合 minio
数据库·django·sqlite
白云偷星子31 分钟前
MySQL笔记14
数据库·笔记·mysql
绵绵细雨中的乡音1 小时前
MySQL 常用函数实操指南:从基础到实战案例
数据库·mysql
凉栀お_2 小时前
MySQL相关知识查询表中内容(第二次作业)
数据库·mysql
ss2733 小时前
手写Spring第7弹:Spring IoC容器深度解析:XML配置的完整指南
java·前端·数据库
PFinal社区_南丞3 小时前
PostgreSQL-10个鲜为人知的强大功能
数据库·后端
misty youth3 小时前
配置openguass 教程(自存)
数据库·ubuntu·华为·openguass
瑞士卷@4 小时前
MyBatis入门到精通(Mybatis学习笔记)
java·数据库·后端·mybatis
白云偷星子4 小时前
MySQL笔记13
数据库·笔记·mysql