计算从员工入职以来至今一共工作了 几年 几个月 几天.
例如: 返回 '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月,则正推逆推天数一致)
为什么呢,究竟哪个更准确一些? 求解~~
例如: 返回 '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月,则正推逆推天数一致)
为什么呢,究竟哪个更准确一些? 求解~~
解决方案 »
- ORA 游标、死锁的问题!
- 这个sql该如何写?
- ORACLE 8I出现怪现象,请高手指教!来者给分
- 着急啊!高手再帮看看我的"存储过程"执行出错!!
- 关于Oracle10g里应用UTL_FILE包的访问路径问题?(在线等待)
- 如何判断字符串中的字符?
- 请问oracle9i中SALES_HISTORY_ROLE的权限是什么,在8i中相应role是什么 谢谢!
- VARCHAR2型字段最大允许的字符数是多少啊?
- 如何提高删除记录的效率
- 快点啊!oracle装不上啊,那位哥哥指点指点啊!拜托了!
- 大家好,我想请教一下在没有安装oracle client的情况下,可以在自己PC上直接访问在服务器上的oracle数据库吗?
- 打印九九乘法表来说明循环
比如你正着减的话就是29天零2小时,倒着减的话如果时间格式为‘yyyy-mm-dd’的话没有小时的话肯定数值一样