2012-08-04 54 views
-1

我想顯示工作人員的姓名和工資,因爲有30天的生日,但我不斷收到錯誤; ORA-00933: SQL command not properly ended使用系統日期選擇

SELECT Name, Salary 
FROM STAFF 
WHERE DOB > trunc(SYSDATE) + DAYS '30'; 

任何人都可以點我在正確的方向?

+0

30天意味着你真正想要1個月?在這種情況下,您可能需要'add_months'函數... – Ben 2012-08-04 20:15:34

+1

閱讀一些基礎知識http://www.mathcs.emory.edu/~cheung/Courses/377/Others/tutorial.pdf – Annjawn 2012-08-05 16:58:45

回答

1

查詢可以寫成如下─

SELECT Name, Salary 
FROM STAFF 
WHERE to_date(to_char(sysdate,'YYYY')||to_char(DOB,'MMDD'),'YYYYMMDD') > trunc(sysdate+30); 

要得到員工的生日是內未來三天內用完的工資 -

SELECT Name, Salary 
FROM STAFF 
WHERE to_date(to_char(sysdate,'YYYY')||to_char(DOB,'MMDD'),'YYYYMMDD') BETWEEN trunc(sysdate) AND trunc(sysdate+30); 

+30增加之後30日內默認爲日期。

0

也許東西沿着這些路線:

SELECT Name, Salary 
    FROM STAFF 
    WHERE TO_DATE(TO_CHAR(SYSDATE, 'YYYY') || TO_CHAR(DOB, 'MMDD'), 'YYYYMMDD') 
      BETWEEN (TRUNC(SYDATE) AND TRUNC(SYSDATE) + 30); 

兩個假設:出生日期是不是今年,你想內未來30天內任何東西,不是短短30天了。如果TRUNC存在,TRUNC可以消除日期上的時間組件。

以及添加的時間間隔的語法是:

dob + interval '1' days 
相關問題