-1

我正在尝试显示由于在 30 天内过生日的员工的姓名和薪水,但我不断收到错误消息;ORA-00933: SQL command not properly ended

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

谁能指出我正确的方向?

4

2 回答 2

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默认情况下将三十天添加到日期。

于 2012-08-04T16:55:48.460 回答
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
于 2012-08-04T17:05:09.263 回答