我想在我的Oracle函数中从出生日期计算当前年龄。
我使用的是(Today-Dob)/30/12
,但这并不准确,因为有些月份有31天。
我需要以最高的精度得到正确的年龄。我该怎么做呢?
发布于 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>
发布于 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
发布于 2017-03-10 01:50:08
SELECT
TRUNC((SYSDATE - TO_DATE(DOB, 'YYYY-MM-DD'))/ 365.25) AS AGE_TODAY FROM DUAL;
这很简单,也很直截了当。
https://stackoverflow.com/questions/3015431
复制相似问题