首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从出生日期和今天计算Oracle年龄

从出生日期和今天计算Oracle年龄
EN

Stack Overflow用户
提问于 2010-06-10 22:39:28
回答 12查看 203.5K关注 0票数 29

我想在我的Oracle函数中从出生日期计算当前年龄。

我使用的是(Today-Dob)/30/12,但这并不准确,因为有些月份有31天。

我需要以最高的精度得到正确的年龄。我该怎么做呢?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-06-10 22:51:51

SQL> select trunc(months_between(sysdate,dob)/12) year,
  2         trunc(mod(months_between(sysdate,dob),12)) month,
  3         trunc(sysdate-add_months(dob,trunc(months_between(sysdate,dob)/12)*12+trunc(mod(months_between(sysdate,dob),12)))) day
  4  from (Select to_date('15122000','DDMMYYYY') dob from dual);

      YEAR      MONTH        DAY
---------- ---------- ----------
         9          5         26

SQL>
票数 55
EN

Stack Overflow用户

发布于 2010-06-11 10:07:03

对于业务逻辑,我通常会发现十进制数(以年为单位)很有用:

select months_between(TRUNC(sysdate),
                      to_date('15-Dec-2000','DD-MON-YYYY')
                     )/12
as age from dual;

       AGE
----------
9.48924731
票数 22
EN

Stack Overflow用户

发布于 2017-03-10 01:50:08

SELECT 
TRUNC((SYSDATE - TO_DATE(DOB, 'YYYY-MM-DD'))/ 365.25) AS AGE_TODAY FROM DUAL;

这很简单,也很直截了当。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3015431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档