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 に答える