Oracle计算年龄:年、月、天

oracle 数据库计算年龄:年、月、日

计算规则:

 1. 计算年
		生日已过
			则:当前年-出生年
		生日未过
			则:当前年-出生年-1
 2. 计算月:
		当前月>=出生月 and 当前日>=出生日
			则:当前月-出生月
		当前月>=出生月 and 当前日<出生日
			则:当前月-出生月-1
		当前月<出生月 and 当前日>=出生日
			则:12-出生月+当前月
		当前月>=出生月 and 当前日<出生日
			则:12-出生月+当前月-1
3. 计算日:
		当前日>=出生日
			则:当前日-出生日
		当前日<出生日
			则:出生日当月总天数-出生日+当前日
select  
		BIRTHDAY as "生日",
		(case when to_char(sysdate,'mmdd')>=to_char(BIRTHDAY,'mmdd') --生日已过
				 then to_char(sysdate,'yyyy')-to_char(BIRTHDAY,'yyyy')
					else to_char(sysdate,'yyyy')-to_char(BIRTHDAY,'yyyy')-1 --生日未过
		end ) as "年",
		(case when to_char(sysdate,'mm')>=to_char(BIRTHDAY,'mm') and  to_char(sysdate,'dd')>=to_char(BIRTHDAY,'dd')
				      then to_char(sysdate,'mm')-to_char(BIRTHDAY,'mm')
				 when to_char(sysdate,'mm')>=to_char(BIRTHDAY,'mm') and  to_char(sysdate,'dd')<to_char(BIRTHDAY,'dd')
							then to_char(sysdate,'mm')-to_char(BIRTHDAY,'mm')-1
				 when to_char(sysdate,'mm')<to_char(BIRTHDAY,'mm') and  to_char(sysdate,'dd')>=to_char(BIRTHDAY,'dd')
							then 12 - to_char(BIRTHDAY,'mm') + to_char(sysdate,'mm')
				when to_char(sysdate,'mm')<to_char(BIRTHDAY,'mm') and  to_char(sysdate,'dd')>=to_char(BIRTHDAY,'dd')
							then 12 - to_char(BIRTHDAY,'mm') + to_char(sysdate,'mm')-1
		end) as "月",
		(case when to_char(sysdate,'dd')>=to_char(BIRTHDAY,'dd')
				     then to_char(sysdate,'dd')-to_char(BIRTHDAY,'dd')
					else to_char(last_day(BIRTHDAY),'dd')-to_char(BIRTHDAY,'dd')+to_char(sysdate,'dd')
			end
		) as "天数"
		
from Pi_MASTER
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值