计算从员工入职以来至今一共工作了 几年 几个月 几天.
例如: 返回 '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月,则正推逆推天数一致)
为什么呢,究竟哪个更准确一些? 求解~~
解决方案 »
- oracle新建一个用户只可以访问指定视图请问要怎样配权限呀
- 未找到要求的FROM关键字!
- Oracle中怎么用触发器实现一个表中不能存在两个PRESIDENT职业
- 小企业的服务器怎么管理
- 怎么没有以前更热闹了?
- 这个触发器应该怎么写?请高手指点一下!急 在线等 拜谢先!
- OAS应用问题?
- 请教一登录Oracle Enterprise Manager Console的问题
- Oracle建表时如何设一个字段为日期类型,缺省值为当前日期时间:像sql server 的getdate()
- 我是一个初学者,我安装了oracle 根本就不知道怎么进入管理器
- 大家好,我想请教一下在没有安装oracle client的情况下,可以在自己PC上直接访问在服务器上的oracle数据库吗?
- 打印九九乘法表来说明循环
比如你正着减的话就是29天零2小时,倒着减的话如果时间格式为‘yyyy-mm-dd’的话没有小时的话肯定数值一样