oracle根据出生日期算年龄
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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月份区分
floor 向下取整
months_between 日期相差的月份数
concat字字符串连接
extract(year from sysdate) 返回当前日期的年份 参考技术A SELECT months_between(SYSDATE,to_date(生日的列名,'yyyy-mm-dd'))/12 FROM 表名;
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根据出生日期算年龄的主要内容,如果未能解决你的问题,请参考以下文章