十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
用case when
创新互联专注于东洲网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供东洲营销型网站建设,东洲网站制作、东洲网页设计、东洲网站官网定制、小程序制作服务,打造东洲网络公司原创品牌,更为您提供东洲网站排名全网营销落地服务。
如:
select name,case when age3 then tranc(between_month(sysdate,生日)/12)
when age 1 and age3 then tranc(between_month(sysdate,生日)/12) then
when age 1 then between_month(sysdate,生日)/12
end case aaa
from 姓名表
可用to_char函数将date类型转成字符类型。
如emp表中有如下数据:
如果计算生日的方法是当前日期的年份减去生日的年份,可用如下语句:
select ename,hiredate,to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy') from emp;
查询结果:
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) 返回当前日期的年份
根据出生日期查询年龄用的还挺多的。
简单分析一下,加入一个孩子五岁半了,那习惯认为他还是5岁。
用Oracle提供的months_between()函数,先获取出生日期和当前日期的月数,然后除以12向下取整:
使用的时候,将时间段替换成出生日期对应的字段即可。
如果,计算年龄用的次数非常多,最好写成自定义函数。