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)

関連する記事

  • R言語 CRAN Task View:心理モデルや手法R言語 CRAN Task View:心理モデルや手法 CRAN Task View: Psychometric Models and Methodsの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Patrick Mair Contact: mair at […]
  • C++ Boostによるコマンドライン引数処理C++ Boostによるコマンドライン引数処理 boost::program_optionsを用いると、コマンドライン引数(オプション)を比較的容易に解析することができる。 #include <iostream> #include <string> #include <boost/program_options.hpp> int main(int argc, char **argv) […]
  • さくらVPSのUbuntuでWordPressをHTTPからHTTPSへ移行する手順さくらVPSのUbuntuでWordPressをHTTPからHTTPSへ移行する手順 当サイトをhttpsに移行した手順をお伝えいたします。 当サイトはさくらVPS上のUbuntu 14.04LTSでWordPressを構築して運用しております。そこで、SSLサーバ証明書はさくらインターネットのサービスであるラピッドSSLを使用することにしました。このサービスを選んだ理由は次になります。 価格が安い […]
  • OpalのAdministration機能OpalのAdministration機能 Opalの管理機能の概要を簡単にお伝えいたします。 ここでのOpalのバージョンは3.02となります。 まず、Opalにアドミニストレータでサインインします。 右上のAdministrationをクリックします。 表示された画面がOpalの管理画面になります。 Opalの管理は「DATA ACCESS」「DATA […]
  • R 関数に時間制限を設ける方法 ある処理にとても時間が掛かるため、一定時間経過後はその処理を途中で打ち切りたいときがある。 例えば、for文で、あるループだけが重いため全体として時間が掛かってしまう場合、その処理を一旦スキップしてfor文の先に処理を進めたい、などである。 ここでは、そのひとつの解決策として、関数に時間制限を設けて、一定時間経過後はその関数を強制終了するコードをご紹介する。 ただし […]
MySQL 月の差分を計算する方法