翌月を取得する
スポンサードリンク
MySQL で翌月を取得する場合、DATE_ADD を使用します。
指定した日付の翌月の同じ日を取得する。
DATE_ADD で INTERVAL 1 MONTH を指定すると、翌月の同じ日を取得することができます。ただし、1月31日など翌月に同じ日が無い場合は月末日を取得します。
サンプルコード
DATE_ADD('2014/12/25',INTERVAL 1 MONTH)
実行例
mysql> SELECT DATE_ADD('2014/12/25',INTERVAL 1 MONTH); +-----------------------------------------+ | DATE_ADD('2014/12/25',INTERVAL 1 MONTH) | +-----------------------------------------+ | 2015-01-25 | +-----------------------------------------+ 1 row in set (0.00 sec) mysql>
翌月に同じ日付が無い場合は月末日を取得します。実行例を見ると、2014/01/29 以降は全て 2014/02/28 になることが分かります。
実行例
mysql> SELECT DATE_ADD('2014/01/25',INTERVAL 1 MONTH), -> DATE_ADD('2014/01/26',INTERVAL 1 MONTH), -> DATE_ADD('2014/01/27',INTERVAL 1 MONTH), -> DATE_ADD('2014/01/28',INTERVAL 1 MONTH), -> DATE_ADD('2014/01/29',INTERVAL 1 MONTH), -> DATE_ADD('2014/01/30',INTERVAL 1 MONTH), -> DATE_ADD('2014/01/31',INTERVAL 1 MONTH)\G *************************** 1. row *************************** DATE_ADD('2014/01/25',INTERVAL 1 MONTH): 2014-02-25 DATE_ADD('2014/01/26',INTERVAL 1 MONTH): 2014-02-26 DATE_ADD('2014/01/27',INTERVAL 1 MONTH): 2014-02-27 DATE_ADD('2014/01/28',INTERVAL 1 MONTH): 2014-02-28 DATE_ADD('2014/01/29',INTERVAL 1 MONTH): 2014-02-28 DATE_ADD('2014/01/30',INTERVAL 1 MONTH): 2014-02-28 DATE_ADD('2014/01/31',INTERVAL 1 MONTH): 2014-02-28 1 row in set (0.00 sec) mysql>
ちなみに実行例では \G オプションを使用して実行結果を垂直表示しています。実行結果の横幅が広い場合、このオプションを使用すると結果を見やすくすることができます。
指定した日付の翌月の1日を取得する。
LAST_DAY 関数で指定した日付の月末日を取得して、その日付に1日追加することで翌月の1日を取得します。2014/12/25 の翌月1日は次のように取得します。
サンプルコード
DATE_ADD(LAST_DAY('2014/12/25'),INTERVAL 1 DAY)
実行例
mysql> SELECT DATE_ADD(LAST_DAY('2014/12/25'),INTERVAL 1 DAY); +-------------------------------------------------+ | DATE_ADD(LAST_DAY('2014/12/25'),INTERVAL 1 DAY) | +-------------------------------------------------+ | 2015-01-01 | +-------------------------------------------------+ 1 row in set (0.00 sec) mysql>
SQL を実行した日の翌月1日を取得する。
CURDATE 関数で当日を取得して LAST_DAY 関数の引数に渡すことで、当月の月末日を取得できます。その日付に1日追加することで翌月の1日を取得します。
サンプルコード
DATE_ADD(LAST_DAY(CURDATE()),INTERVAL 1 DAY)
実行例
mysql> SELECT DATE_ADD(LAST_DAY(CURDATE()),INTERVAL 1 DAY), CURDATE(); +----------------------------------------------+------------+ | DATE_ADD(LAST_DAY(CURDATE()),INTERVAL 1 DAY) | CURDATE() | +----------------------------------------------+------------+ | 2015-04-01 | 2015-03-15 | +----------------------------------------------+------------+ 1 row in set (0.00 sec) mysql>
スポンサードリンク