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;

测试结果:

相关推荐
koi77u8 分钟前
嵌入式学习———sqlite数据表
linux·数据库·学习·sqlite
xx~t12 分钟前
嵌入式——Linux软件编程——数据库
linux·c语言·数据库·oracle·sqlite
ACP广源盛1392462567319 分钟前
M6/M5 Pro Mac mini 端侧 AI 爆发@ACP#YLB3118 存储扩展芯片在本地 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
隔窗听雨眠27 分钟前
关系型数据库长期可维护性完全指南:设计、索引、运维、安全的系统性实践
数据库
涛思数据(TDengine)42 分钟前
从“改了就改了“到“每一次变更都可追溯“:工业 AI 实战直播(十二期)
大数据·数据库·人工智能·时序数据库·tdengine
xixingzhe243 分钟前
spring boot项目接口访问慢问题解决方案
java·数据库·spring boot
oradh1 小时前
Oracle普通表改造分区表的方法总结
数据库·oracle·普通表改造分区表
Gent_倪1 小时前
MySQL 与 Hive 语法异同点详解
数据库·hive·mysql
七夜zippoe1 小时前
DolphinDB 故障排查实战:系统、数据库与集群常见问题诊断
数据库·wpf·集群·常见问题·故障排查·dolphindb
!chen2 小时前
数据库主从有延迟怎么处理
数据库·adb