我想在 '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的主要内容,如果未能解决你的问题,请参考以下文章

如何查询一年中的 GROUP BY Month

如何在一行中获取这些数据

Oracle 查询以获取月份数据并为不可用的月份提供 0

SAS宏以dhms格式表示日期

我想在 for 循环中串联运行多个变量,我想取 x 和 y 的每次迭代的总和

我想在 Laravel 项目中使用 TypeScript 和 React