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:Cluster Analysis & Finite Mixture Modelsの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Friedrich Leisch, Bettina Gruen Contact: Bettina.Gruen at […]
  • R ggplotでファセットラベルテキストの体裁を変更する方法 ggplotのfacet_gridやfacet_wrapを用いた場合、垂直方向のラベルテキストが縦書きとなり直感的でないときがあります。 この場合は、ラベルテキストのアングルを横書きに変更することで、より見やすいグラフとなります。 デフォルト 特に何も指定しない場合は、次のようなグラフとなります。 library(ggplot2) data("diamond […]
  • R言語 CRAN Task View:極値解析R言語 CRAN Task View:極値解析 CRAN Task View: Extreme Value Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Christophe Dutang, Kevin Jaunatre Contact: Christophe.Dutang at […]
  • R dplyrパッケージで複数の列を文字列として指定し結合された列を追加する方法R dplyrパッケージで複数の列を文字列として指定し結合された列を追加する方法 Rのdplyrパッケージのmutate関数は新たに列を追加する関数です。 ここでは、mutate関数に文字列として与えた列に対して、paste関数で統合した結果を新たに追加する方法をお伝えします。 サンプルデータとして、統計的な学生の髪と目の色が収められているHairEyeColorを用います。 ただし、このサンプルデータはtableとなっておりますので、実際にはd […]
  • Wikipediaのデータファイルをプレーンテキストに変換するWikipediaのデータファイルをプレーンテキストに変換する Wikipediaのデータファイルをプレーンテキストに変換する方法を備忘記録として記しておく。 Wikipedia日本語版のデータファイルは以下のサイトからダウンロードできる。 ウィキペディア日本語版 Wikipediaのデータファイルをプレーンテキストに変換するPythonプログラム「WikiExtractor」を以下のサイトからダウンロードする。 […]
MySQL 月の差分を計算する方法