选择使用Sysdate

时间:2012-08-04 16:53:15

标签: sql oracle

我正在尝试显示工作人员的姓名和工资,因为他们在30天内过生日但我一直收到错误; ORA-00933: SQL command not properly ended

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

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

查询可以写成如下 -

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

要获得生日在接下来的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天添加到日期。

答案 1 :(得分: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可以删除日期中的时间组件。

添加间隔的语法是:

dob + interval '1' days