NLS_DATE_FORMATが'YYYY-MM-DD'に設定されているセッションで、以下のSQL文を実行しました。どのような結果が返されますか。
SELECT DATE '2026-01-15' + INTERVAL '1-2' YEAR TO MONTH AS result FROM dual;A2027-03-15✓
B2026-03-15
C2027-01-17
Dエラーになる
正解:A解説
INTERVAL '1-2' YEAR TO MONTHは「1年2か月」を表すINTERVALリテラルです。2026-01-15に1年2か月を加算するため、2027-03-15が返されます。
SELECT DATE '2026-01-15' + INTERVAL '1-2' YEAR TO MONTH AS result FROM dual;
RESULT
-----------
2027-03-15INTERVAL型の種類
| データ型 | 表す期間 | リテラルの例 |
|---|---|---|
| INTERVAL YEAR TO MONTH | 年と月 | INTERVAL '1-2' YEAR TO MONTH(1年2か月) |
| INTERVAL DAY TO SECOND | 日、時、分、秒 | INTERVAL '3 12:00:00' DAY TO SECOND(3日と12時間) |
ADD_MONTHSとの違い
INTERVALで月を加算した結果、その月に存在しない日付になる場合は、月末日に補正されずエラーになります。
SELECT DATE '2026-01-31' + INTERVAL '1' MONTH FROM dual;
-- ORA-01839エラーになる
SELECT ADD_MONTHS(DATE '2026-01-31', 1) FROM dual;
-- 2026-02-28(月末日に補正される)