计算从员工入职以来至今一共工作了 几年 几个月 几天.
例如: 返回 '11年 2月 3天'
我分别用的正向推算和逆向推算2种查询,但是遇到与雇佣日期月和本月一样的情况下.天数不一致.
例如 员工7654的MARTIN.是81年9月入职的,现在我们是9月份,SQL查询如下:
-------------------------------------------------------------------
--逆推
 select empno,ename,hiredate,
        trunc(months_between(sysdate, hiredate)/12) || '年 ' ||
        trunc(mod(months_between(sysdate, hiredate), 12)) || '月 ' ||            
        trunc(add_months(sysdate, -months_between(sysdate, hiredate)) - hiredate) || '天'       
 from emp where empno=7654;
==========================================================
 --正推
 select empno,ename,hiredate,
        trunc(months_between(sysdate, hiredate)/12) || '年 ' ||
        trunc(mod(months_between(sysdate, hiredate), 12)) || '月 ' ||  
        trunc(sysdate - add_months(hiredate, months_between(sysdate, hiredate)))|| '天'
  from emp where empno=7654;
------------------------------------------------------------------
 用正推算 比逆推要多一天.(雇佣日期9月28,我查询和发贴的日期是2008-9-26) 查询结果正推为29天 逆推为28天
 如果雇佣日期的月份和今年的执行查询的月份不同则没有异常,(比如现在是9月,雇佣日期不是9月,则正推逆推天数一致)
 为什么呢,究竟哪个更准确一些? 求解~~