2017-08-24 41 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