NLS_DATE_FORMATが'YYYY-MM-DD'に設定されているセッションで、以下のSQL文を実行しました。どのような結果が返されますか。
SELECT ADD_MONTHS(DATE '2026-01-31', 1) AS next_month FROM dual;A2026-02-28✓
B2026-02-31
C2026-03-03
Dエラーになる
正解:A解説
ADD_MONTHS(日付, N)は、日付にNか月を加算するファンクションです。
加算後の月に同じ日が存在しない場合や、元の日付が月末日の場合は、加算後の月の月末日を返します。2026年2月は28日までのため、2026-02-28が返されます。
SELECT ADD_MONTHS(DATE '2026-01-31', 1) AS next_month FROM dual;
NEXT_MONTH
-----------
2026-02-28元の日付が月末日の場合は、結果も月末日になる点に注意してください。
SELECT ADD_MONTHS(DATE '2026-02-28', 1) AS next_month FROM dual;
NEXT_MONTH
-----------
2026-03-31主な日付ファンクション
| ファンクション | 戻り値 |
|---|---|
| ADD_MONTHS(D, N) | DにNか月を加算した日付 |
| MONTHS_BETWEEN(D1, D2) | D1とD2の間の月数(数値) |
| LAST_DAY(D) | Dを含む月の月末日 |
| NEXT_DAY(D, '曜日') | Dより後で、指定した曜日になる最初の日付 |
なお、DATE '2026-01-31' + 31のように日数を加算した場合は、単純に31日後の2026-03-03になります。