当前位置:首页 > 技能相关 > ORACLE > 正文内容

Oracle:计算年龄的方法以及精确计算年月日的现实方式

admin2年前 (2023-06-19)ORACLE4420 修订时间:2023-06-20 09:14:49

如何通过当前日期与出生年月日计算年龄,有以下几种方式,具体方法依据实际需求取选择:

方式一:

select TRUNC(MONTHS_BETWEEN(SYSDATE,to_date('1990-03-25 00:00:00','yyyy-mm-dd hh24:mi:ss'))/12) from dual;

方式二:

SELECT EXTRACT(year FROM SYSDATE) -
       EXTRACT(year FROM to_date('1990-03-25 00:00:00','yyyy-mm-dd hh24:mi:ss'))
FROM dual;

方式三:

select 
     To_Char(trunc(months_between(sysdate, date_of_birth) / 12)) || '岁' ||  
     To_Char(trunc(months_between(sysdate, date_of_birth) - (trunc(months_between(sysdate, date_of_birth) / 12) * 12))) || '个月' ||
     To_Char(trunc(sysdate) -  add_months(date_of_birth,trunc(months_between(sysdate, date_of_birth)))) || '天'
from dual

如上方法使用到的函数如下:

(1)SYSDATE

sysdate取Oracle服务器系统的日期与时间;

语句:

select sysdate from dual;

结果:

image.png

Oracle系统中用SYSDATE取得的不仅包含日期而且还包含有时间信息。

(2)ADD_MONTHS(date,integer)

该函数将返回在指定的日期上加一个月份数后的日期。其参数的具体含义如下:date:指定的日期。integer:要加的月份数,该值如果为负数,则表示要减去的月份数。

语句:


--指定日期两月后的日期
select add_months(sysdate,2) from dual;
--指定日期两月前的日期
select add_months(sysdate,-2) from dual;

结果:

增加两个月

image.png

减去两个月

image.png

(3)MONTHS_BETWEEN(date1,date2)

返回两个日期间的月份

语句:

select months_between(TO_DATE('2024/10/31', 'YYYY/MM/DD'),  -- 这里放较晚日期时间
                      TO_DATE('2022/10/26', 'YYYY/MM/DD'))  -- 这里放较早日期时间
from dual;

结果:

image.png

(4)TRUNC(date[,fmt])

语句:

SELECT TO_CHAR(TRUNC(TO_DATE('2022-11-02 09:00:00', 'YYYY-MM-DD HH24:MI:SS')),'YYYY-MM-DD HH24:MI:SS')
  FROM DUAL;

结果:

image.png

TRUNC 会截取日期部分信息;

拓展:Oracle日期函数简介(sysdate、trunc、LAST_DAY等)

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=315

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。