我正在尝试显示工作人员的姓名和工资,因为他们在30天内过生日但我一直收到错误; ORA-00933: SQL command not properly ended
SELECT Name, Salary
FROM STAFF
WHERE DOB > trunc(SYSDATE) + DAYS '30';
有人能指出我正确的方向吗?
答案 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