SQL> select to_char (to_date ('201312', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual;
Select to_char (to_date ('20140901', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual
ORA-01839: The date of the specified month is invalid
SQL> select to_char (to_date ('201312', 'yyyymmdd') + interval '2' month, 'yyyymmdd') from dual;
To_char (to_date ('20140901', 'yy
------------------------------
20061031
SQL> select to_char (to_date ('201312', 'yyyymmdd') + interval '3' month, 'yyyymmdd') from dual;
Select to_char (to_date ('20140901', 'yyyymmdd') + interval '3' month, 'yyyymmdd') from dual
ORA-01839: The date of the specified month is invalid
SQL> select to_char (to_date ('201312', 'yyyymmdd') + interval '4' month, 'yyyymmdd') from dual;
To_char (to_date ('20140901', 'yy
------------------------------
20061231
SQL> select to_char (to_date ('201312', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual;
Select to_char (to_date ('20140901', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual
ORA-01839: The date of the specified month is invalid
SQL> select to_char (to_date ('201312', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual;
Select to_char (to_date ('20140901', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual
ORA-01839: Invalid date for the specified month
SQL> select to_char (to_date ('201312', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual;
Select to_char (to_date ('20140901', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual
ORA-01839: The date of the specified month is invalid
SQL> select to_char (to_date ('201312', 'yyyymmdd') + interval '1' month, 'yyyymmdd') from dual;
To_char (to_date ('20140901', 'yy
------------------------------
20060228
If the day in the date does not exist in the next (n) month, an error is returned, but there is no problem with add_months.
The above problems have been tested on both 9i and 10g!