搜索在特定年份聘用的员工

时间:2013-03-17 16:01:59

标签: sql oracle11g

我的练习是创建一个查询,以获取1998年7月至1999年12月期间雇用的员工列表。该列表必须包含员工ID,姓氏和名字以及月薪 - 假设该表包含年薪和员工每年使用hr表架构获得12个工资。

我写的是:

select employee_id, last_name, first_name, salary/12 as monthly_salary
from employees
where hire_date between ... and ... ;

我的问题是:我应该如何在上面提到的月份和年份搜索hire_date,例如。 1998年7月?

1 个答案:

答案 0 :(得分:0)

如果您拥有的是年月号,并且正在查找该月的第一个和最后一个日期,则可以使用to_datelast_date函数轻松找到这些日期。

SQL> select to_date('2013/03', 'YYYY/MM') first from dual;
FIRST
---------
01-MAR-13

SQL> select last_day(to_date('2013/03', 'YYYY/MM')) last from dual;
LAST
---------
31-MAR-13

使用这些功能在查询中构建边界日期。

注意:您也可以使用trunc(hire_date, 'MM')执行某些操作,但这可能会阻止优化程序在hire_date上使用索引,这是不可取的。