oracle 根据出生日期计算精确年龄

SELECT floor(months_between(SYSDATE, to_date('20141217','yyyy-mm-dd'))/ 12) a,--手工输入日期
       months_between(SYSDATE, u.modifydate) / 12 b,--从数据库取值计算月份
       floor(months_between(SYSDATE, u.modifydate) / 12) c--对月份向下取整,表示年龄
  FROM org_userinfo u;
算年龄可以精确到日。

months_between函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。
floor(x),有时候也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求的值左边的值,也就是不大于要求的值的最大的那个)。

猜你喜欢

转载自blog.csdn.net/xianrenyingzi/article/details/50351768