2012-08-04 44 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 
相关问题