-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);

誕生日が次の 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 日を追加します。

于 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);

2 つの仮定: 生年月日は今年ではなく、30 日後だけでなく、今後 30 日以内に何かが必要です。TRUNC を使用して、日付の時刻コンポーネントが存在する場合はそれらを削除します。

間隔を追加するための構文は次のとおりです。

dob + interval '1' days
于 2012-08-04T17:05:09.263 に答える