我想在 '20-FEB-81' 和 '01-MAY-81' 之间选择hiredate
Posted
技术标签:
【中文标题】我想在 \'20-FEB-81\' 和 \'01-MAY-81\' 之间选择hiredate【英文标题】:I want to choose hiredate between '20-FEB-81' AND '01-MAY-81'我想在 '20-FEB-81' 和 '01-MAY-81' 之间选择hiredate 【发布时间】:2011-09-10 16:17:56 【问题描述】:我想要“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> 从emp中选择empno、ename、job、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>
【问题讨论】:
请阅读错误说明。 【参考方案1】: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')
【讨论】:
TO_DATE
调用可能应该使用“DD-MON-RR”格式掩码。 DD-MON-YY 将“20-FEB-81”转换为 2081 年 2 月 20 日。DD-MON-RR 将“20-FEB-81”转换为 1981 年 2 月 20 日,这大概是所需的。以上是关于我想在 '20-FEB-81' 和 '01-MAY-81' 之间选择hiredate的主要内容,如果未能解决你的问题,请参考以下文章