2017-08-24 38 views
0

我是DB的新手,我有一个关于根据日期显示表中内容的问题。查询以显示与某些天数相关的表中的行在Oracle中

我如何可以搜索所有的实体从EMPLOYEE表,在EmpPayScaleID和+/-匹配一定的价值EmpPayDate

例如3天,
我需要打印所有值形式EMPLOYEE表其中EmpPayScaleId1001 d EmpPayDate应该是+/- 3天,从01-AUG-17 (应显示从29-JUL-17到04-SEP-17的记录)

我尝试这样做:

SELECT * FROM EMPLOYEE 
       WHERE EmpPayScaleId = 1001 
       AND EmpPayDate in ADD_MONTHS(01-Aug-17, -3, dd-mm-yy) 
       AND EmpPayDate in ADD_MONTHS(01-Aug-17, 3, dd-mm-yy); 

更正:

SELECT * FROM EMPLOYEE 
       WHERE EmpPayScaleId = 1001 
       AND EmpPayDate in ADD_MONTHS(01-Aug-17, -3, 'DD-MON-YY') 
       AND EmpPayDate in ADD_MONTHS(01-Aug-17, 3, 'DD-MON-YY'); 

这说明不了什么。我的错误在哪里?
这是一个正确的查询吗?

编辑:
它显示的参数无效号码,当我使用ADD_MONTHS(01-AUG-17, 3, 'DD-MON-YY')

回答

1

日期在查询已被错误地规定。 以下的where子句是足够的:

... 
WHERE EmpPayScaleId = 1001 
      AND to_date('01-Aug-17','DD-MON-YY') between EmpPayDate-3 
                and EmpPayDate+3; 
+0

工程就像一个魅力!谢谢! :d – intruder