我正在尝试显示由于在 30 天内过生日的员工的姓名和薪水,但我不断收到错误消息;ORA-00933: SQL command not properly ended
SELECT Name, Salary
FROM STAFF
WHERE DOB > trunc(SYSDATE) + DAYS '30';
谁能指出我正确的方向?
查询可以写成如下 -
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
默认情况下将三十天添加到日期。
也许是这样的:
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