查询以显示与Oracle中特定天数相关的表中的行

时间:2017-08-24 19:26:16

标签: oracle date

我是DB的新手,我有一个关于根据日期显示表格内容的问题。

如何搜索 EMPLOYEE 表格中与 EmpPayScaleID 中的某些值匹配的所有实体以及+/- 3天< strong> EmpPayDate

例如,
我需要在 EMPLOYEE 表中打印所有值,其中 EmpPayScaleId 1001 EmpPayDate 应该是从01-AUG-17 +/- 3天(应显示从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 个答案:

答案 0 :(得分:1)

您的查询中的日期指定不正确。 以下where子句就足够了:

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