0

我的练习是创建一个查询来获取从 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 月?

4

1 回答 1

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,这是不可取的。

于 2013-03-17T16:19:08.733 回答