Oracle 根据出生日期计算年龄

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 根据出生日期计算年龄相关的知识,希望对你有一定的参考价值。

select
(c.name)姓名,
(select (to_char(sysdate,'YYYY')-to_char(c.birthdate, 'YYYY')) age from C c)年龄,
(b.P_NAME)项目名称,
(a.NUMBER)流水号
from
A a,
B b,
C c
where
a.id=b.id
and
a.id=c.id
说明: c.birthdate是date类型,‘YYYY-MM-DD 00:00:00'
以上提示单行查询语句返回多行

可用to_char函数将date类型转成字符类型。

如emp表中有如下数据:

如果计算生日的方法是当前日期的年份减去生日的年份,可用如下语句:

select ename,hiredate,to_char(sysdate,\'yyyy\')-to_char(hiredate,\'yyyy\') from emp;

查询结果:

参考技术A 肯定的,你的子查询写,要么是写多了,要么是写少了。
写多了,可以不用写子查询的
(select (to_char(sysdate,'YYYY')-to_char(c.birthdate, 'YYYY')) age from C c)年龄,
改为
to_char(sysdate,'YYYY')-to_char(c.birthdate, 'YYYY') 年龄即可
写少了.(先确定id在c表中没有重复啊。)
from中去掉c
,然后在
(select (to_char(sysdate,'YYYY')-to_char(c.birthdate, 'YYYY')) age from C c)年龄,
改为
(select (to_char(sysdate,'YYYY')-to_char(c.birthdate, 'YYYY')) age from C c where c.id=a.id)年龄,
参考技术B 试试看子查询加上rownum=1
select
(c.name)姓名,
(select (to_char(sysdate,'YYYY')-to_char(c.birthdate, 'YYYY')) age from C c where rownum=1)年龄,
(b.P_NAME)项目名称,
(a.NUMBER)流水号
from
A a,
B b,
C c
where
a.id=b.id
and
a.id=c.id本回答被提问者采纳
参考技术C 把select换成ceil( months_between(sysdate,c.birthdate)/12) 参考技术D months_between(trunc(sysdate,'yyyy'),trunc(c.birthdate,'yyyy'))/12

oracle根据出生日期算年龄

oracle根据出生日期算年龄,凡是在10月31号之前出生的时候,比如2010年统计的时候,有个孩子是09年8月1号出生,2010年统计的时候,算2岁,如果他在09年11月1号出生的时候,2010年统计的时候,他就算1岁
凡是在10月31号之前出生的时候,比如2010年统计的时候,有个孩子是09年8月1号出生,2010年统计的时候,算1岁,如果他在09年11月1号出生的时候,2010年统计的时候,他就算0岁,意思是按10月份区分

select floor(months_between(to_date(concat(extract(year from sysdate),'-10-31'),'YYYY-MM-DD'),to_date(生日的日期,'yyyy-mm-dd'))/12) from table_name

floor 向下取整
months_between 日期相差的月份数
concat字字符串连接
extract(year from sysdate) 返回当前日期的年份
参考技术A SELECT months_between(SYSDATE,to_date(生日的列名,'yyyy-mm-dd'))/12 FROM 表名;

以上是关于Oracle 根据出生日期计算年龄的主要内容,如果未能解决你的问题,请参考以下文章

oracle根据出生日期算年龄

oracle根据出生日期算年龄

Oracle 根据传入日期参数 返回年龄 函数......

根据出生年份计算年龄的公式,如何根据出生日期求年龄?

Oracle PL/SQL 计算年龄

出生日期,根据出生日期怎么算年龄?