2011-09-10 1 views
0

Я хочу, чтобы имена сотрудников, работа, нанимаемые между '20 ​​-FEB-81 'AND '01 -MAY-81 », а также в порядке возрастанияЯ хочу выбрать найм между '20 ​​-FEB-81 'AND '01 -MAY-81'

запроса я столкнулся с ошибкой

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, сала от ого;

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-YY конвертирует «20-FEB-81» в 20 февраля 2081. DD-MON-RR преобразует «20-FEB-81» в 20 февраля 1981 года, что, по-видимому, является желательным. –

+0

Хорошо, я изменил свой ответ –