ADD_MONTHSが行なう正規化のために、関数の結果の多くは直感的なものではなく、逆の計算の結果は必ずしも元通りにはなりません。例えば、例: 現在の日付から1ヶ月後の日付を問合わせるの結果を例: 現在の日付の前の月を問合わせるの結果と比較してください。
これは、この関数が常に有効な日付を生成するものの、必ずしも期待通りの日付を生成するわけではないためです。月の間隔の算術の正確さは、相対的にとらえるべき問題です。どんな定義も任意定義であって汎用化することはできないので、「期待通り」と言う語は、ADD_MONTHSの動作の説明としてより良い表現であるに過ぎません。
次の SELECT文は、有効であり期待通りの日付を戻します。
SELECT ADD_MONTHS ('1999-08-15' , 1);
この文は1999-09-15を戻します。
SELECT ADD_MONTHS ('1999-09-30' , -1);
この文は1999-08-30を戻します。
次のSELECT文は有効な日付を戻しますが、その「正確さ」は、どのように「1ヶ月」を定義するかにより異なります。
SELECT ADD_MONTHS ('1999-08-31' , 1);
この文は1999-09-30を戻します。これは、9月には30日までしかなく、正規化されていない1999-09-31という回答は有効な日付ではないからです。