2011-09-10 4 views
0

'20 -FEB-81 'と'01 -MAY-81の間の従業員、 」と、昇順に私は'20 -FEB-81 'と'01 -MAY-81'の間で雇用を選択したい

クエリ私はEMPから

SQL> select ename, job, hiredate where hiredate between '20-FEB-81' AND '01-MAY-81' from emp; 
select ename, job, hiredate where hiredate between '20-FEB-81' AND '01-MAY-81' from emp 
         * 
ERROR at line 1: 
ORA-00923: FROM keyword not found where expected 


SQL> 

私のテーブル SQL>を選択EMPNO、ENAME、仕事、HIREDATE、SALエラーで走りました。

EMPNO ENAME  JOB  HIREDATE   SAL 
---------- ---------- --------- --------- ---------- 
    7839 KING  PRESIDENT 17-NOV-81  5000 
    7698 BLAKE  MANAGER 01-MAY-81  2850 
    7782 CLARK  MANAGER 09-JUN-81  2450 
    7566 JONES  MANAGER 02-APR-81  2975 
    7654 MARTIN  SALESMAN 28-SEP-81  1250 
    7499 ALLEN  SALESMAN 20-FEB-81  1600 
    7844 TURNER  SALESMAN 08-SEP-81  1500 
    7900 JAMES  CLERK  03-DEC-81  950 
    7521 WARD  SALESMAN 22-FEB-81  1250 
    7902 FORD  ANALYST 03-DEC-81  3000 
    7369 SMITH  CLERK  17-DEC-80  800 

EMPNO ENAME  JOB  HIREDATE   SAL 
---------- ---------- --------- --------- ---------- 
    7788 SCOTT  ANALYST 09-DEC-82  3000 
    7876 ADAMS  CLERK  12-JAN-83  1100 
    7934 MILLER  CLERK  23-JAN-82  1300 

14 rows selected. 

SQL> 
+3

をエラーの説明をお読みください。 –

答えて

6

一部が部分から後を行くザ・。

select ename, job, hiredate 
from emp 
where hiredate between '20-FEB-81' AND '01-MAY-81' 

NLSの設定が変更された場合、日付リテラルが正しく機能しない場合があることに注意してください。代わりにto_date()を使用することを強くお勧めします。

select ename, job, hiredate 
from emp 
where hiredate between to_date('20-FEB-81', 'DD-MON-RR') AND to_date('01-MAY-81', 'DD-MON-RR') 

しかし、これはまだ言語設定の問題の対象となり、より良い月の名前ですべての使用しない:

select ename, job, hiredate 
from emp 
where hiredate between to_date('20-02-81', 'DD-MM-RR') AND to_date('01-05-81', 'DD-MM-RR') 
+0

はい、あなたは正しいです(私はそれを使用しません...) –

+1

'TO_DATE'呼び出しはおそらく 'DD-MON-RR'形式のマスクを使用するべきです。 DD-MON-RRは'20 -FEB-81 'を2081年2月20日に変換します。DD-MON-RRは'20 -FEB-81'を1981年2月20日に変換します。 –

+0

良い点、私は私の答えを変更しました –

関連する問題