如何找到雇用不到十年前的员工?

时间:2011-11-02 15:31:59

标签: oracle date-arithmetic

我想写一个查询来显示所有工作不到10年的员工的员工编号,姓氏,雇用日期和月数。

这就是我所拥有的,但WHERE功能有问题:

SELECT employee_id, last_name, hire_date, MONTHS_BETWEEN(SYSDATE, hire_date) "number of months employed" 
FROM employees
WHERE MONTHS_BETWEEN(SYSDATE, hire_date) <= 120;

PS:当我在没有WHERE功能的情况下运行它时,对于“雇用的月数”,我得到292.530207959976105137395459976105137395

请帮忙! :(

1 个答案:

答案 0 :(得分:3)

  

“当我有”WHERE MONTHS_BETWEEN(SYSDATE,hire_date)&lt; = 120;“   添加并运行它,我会得到no data found

这意味着公司在过去十年中没有聘请任何员工。

  

“当我删除'WHERE MONTHS_BETWEEN(SYSDATE,hire_date)&lt; =   120;`我将获得表中所有员工的结果   “雇用的月数”,会给我   292.530207959976105137395459976105137395。 “

您正在使用基于规范SCOTT.EMP表的表格,其中所有员工都是在20世纪80年代的某个时候雇用的。

  

“现在,想找到那些在那里工作的人少于10岁   年。“

您需要修改数据。尝试这样的查询。如果ID以奇数结尾的任何员工的雇用,它将减少大约二十五年:

update employees
set hiredate = add_months(hiredate, 300)
where mod(employee_id,2)=1
/