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);
誕生日が次の 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 日を追加します。
おそらく、これらの行に沿ったもの:
SELECT Name, Salary
FROM STAFF
WHERE TO_DATE( TO_CHAR(SYSDATE, 'YYYY') || TO_CHAR(DOB, 'MMDD'), 'YYYYMMDD' )
BETWEEN (TRUNC(SYDATE) AND TRUNC(SYSDATE) + 30);
2 つの仮定: 生年月日は今年ではなく、30 日後だけでなく、今後 30 日以内に何かが必要です。TRUNC を使用して、日付の時刻コンポーネントが存在する場合はそれらを削除します。
間隔を追加するための構文は次のとおりです。
dob + interval '1' days