OracleのADD_MONTHSで月を加算する際、加算対象日がその月の最終日だったら、加算後の日も最終日になる。
だから、単純にMySQLに移行しDATE_ADDに置き換えるとき、最終日が意味を持つのか?ということはよく考えなくてはならない。

<Oracle>
[sql]ADD_MONTHS(‘2012-02-29’, 1) => 2012-03-31[/sql]

<MySQL>
[sql]DATE_ADD(‘2012-02-29’, INTERVAL 1 MONTH) => 2012-03-29[/sql]

MySQLのほうが素直な気がする。
なので、MySQLでも同様に最終日だったら1月加算しても最終日にする、という動きにしたい場合、ストアドファンクションなりプログラム側でうまいこと値を渡してやるなりしないと大変だね。というはなしです。

投稿者 peaco

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です