Я хочу выбрать hiredate между '20 ​​-FEB-81 'и '01 -MAY-81' - PullRequest
0 голосов
/ 10 сентября 2011

Я хочу, чтобы имена сотрудников, должности, найма были в диапазоне от '20 -FEB-81 'до '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, job, hiredate, sal из emp;

 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>

1 Ответ

6 голосов
/ 10 сентября 2011

Часть WHERE идет после части FROM.

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')
...