我的练习是创建一个查询,以获取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月?
答案 0 :(得分:0)
如果您拥有的是年月号,并且正在查找该月的第一个和最后一个日期,则可以使用to_date
和last_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
上使用索引,这是不可取的。