MySQLでやりたいことから調べられるリファレンス

MySQL 逆引きリファレンス

翌月を取得する

スポンサードリンク

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>
スポンサードリンク

日付・時刻関連

その他のカテゴリー一覧