MySQLで、月の差分を計算する方法をお伝えする。
計算は、PERIOD_DIFF関数を用いれば簡単に求めることができる。
これは、二つの期間の差の月数を返す関数である。
PERIOD_DIFF(P1, P2)
月の差分はP1-P2として計算される。
二つの引数は、「YYMM」または「YYYYMM」でなければならない。
また、DATE型でもないことに注意が必要だ。
実際に、いくつか試してみよう。
mysql> SELECT PERIOD_DIFF(201512, 201501);
+-----------------------------+
| PERIOD_DIFF(201512, 201501) |
+-----------------------------+
| 11 |
+-----------------------------+
1 row in set (0.00 sec)
mysql> SELECT PERIOD_DIFF(201501, 201512);
+-----------------------------+
| PERIOD_DIFF(201501, 201512) |
+-----------------------------+
| -11 |
+-----------------------------+
1 row in set (0.00 sec)
二つのDATE型のカラムから月の差分を計算するにはDATE_FORMAT関数を用いて、次のようにすればよい。
d1とd2をDATE型とする。
PERIOD_DIFF(DATE_FORMAT(d1, '%Y%m'), DATE_FORMAT(d2, '%Y%m'))
適当なデータベースとテーブルを作成して実際に試してみよう。
mysql> CREATE DATABASE sample_database;
Query OK, 1 row affected (0.00 sec)
mysql> USE sample_database;
Database changed
mysql> CREATE TABLE sample_table(d1 DATE, d2 DATE);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO sample_table VALUES ('2015-12-01', '2015-01-01');
Query OK, 1 row affected, 2 warnings (0.00 sec)
mysql> SELECT PERIOD_DIFF(DATE_FORMAT(d1, '%Y%m'), DATE_FORMAT(d2,'%Y%m')) FROM sample_table;
+--------------------------------------------------------------+
| PERIOD_DIFF(DATE_FORMAT(d1, '%Y%m'), DATE_FORMAT(d2,'%Y%m')) |
+--------------------------------------------------------------+
| 11 |
+--------------------------------------------------------------+
1 row in set (0.00 sec)
MySQL 月の差分を計算する方法