扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
SQL语句如下:
成都创新互联主营罗甸网站建设的网络公司,主营网站建设方案,成都app开发,罗甸h5成都微信小程序搭建,罗甸网站营销推广欢迎罗甸等地区企业咨询
select floor(MONTHS_BETWEEN(sysdate,date'2016-1-1')/12) as age from dual;
结果:
这个办法很多,如果是比较精确的可以用month_between函数,然后除以12,最后在trunc这样就能得到具体的年龄了。
比如trunc(month_between(sysdate,时间类型的生日字段)/12)
个人感觉这个精确一些,能精确到天,只要还没过生日,那么就不会加一岁。
当然二者直接相减trunc((sysdate-时间类型的生日字段)/365)也可以。
sysdate-时间类型的生日字段,这么相减默认出现的是相差的天数,所以除以365。这个也可以,不过有些年是366天,不过因为366天的年分比较少,所以基本上不会相差很多。只是会出现,“提前”的情况。不过80年最多才21天(大概是这样,我没细算,就算四年一次),所以对实际影响不是特别大。如果要求准确那么还是上面的靠谱一些。
用函数取出字段年,然后用现在的年相减也可以。这个就是一个大概(个人认为更加不靠谱),比如一个人2050年12月30日出生,现在是2055年后的1月1号,那么按照年来说就是5,但是其实才4岁多一点,所以年这个只是一个大概的,不会十分准确。
可用to_char函数将date类型转成字符类型。
如emp表中有如下数据:
如果计算生日的方法是当前日期的年份减去生日的年份,可用如下语句:
select ename,hiredate,to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy') from emp;
查询结果:
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流