0

我正在创建一个查询。在那个查询中,我想从系统日期减去日期。我的桌子如下所示。

Table Name : Employee
---------------------
ID
NAME
JOINDATE

我正在编写此查询以获取我的结果

SELECT * FROM SS.EMPLOYEE WHERE (sysdate - JOINDATE)='05-Ded-11'

这会引发以下错误:

SQL Error: ORA-00920: invalid relational operator

那么如何做到这一点???如果有人知道,请帮助我。

4

1 回答 1

2

在 Oracle 日期算术中,减去两个日期会得到两个日期之间的天数:

SQL> SELECT DATE '2000-12-31' - DATE '2000-01-01' year FROM DUAL;

      YEAR
----------
       365

因此,您的WHERE条款对 Oracle 不正确,因为它无法将数字与日期进行比较。你想用这个比较来表达什么?

如果要过滤给定日期之前的所有日期,只需比较两个日期:

SELECT * FROM SS.EMPLOYEE WHERE joindate <= to_date('2011-12-05', 'yyyy-mm-dd')

如果要选择给定区间内的所有行,可以使用多重比较或运算符BETWEEN

SELECT * 
  FROM SS.EMPLOYEE 
 WHERE joindate BETWEEN to_date('2011-12-05', 'yyyy-mm-dd') AND SYSDATE

更新

两个日期之间的月数由函数给出MONTHS_BETWEEN。您可以将此函数的结果与(月)数进行比较。

于 2012-07-25T14:25:04.807 回答