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実装と解説 対応のない2標本の母平均の差の検定(母分散が異なる) [latexpage] 母分散が異なるの場合の対応のない2標本の母平均の差の検定とは、2つの母集団が正規分布に従い、ともに母分散が異なるとき、一方の母平均が他方の母平均と「異なる」または「大きい」、「小さい」かどうかを、検定統計量がt分布に従うことを利用して検定します。 統計的検定の流れ 検定の大まかな流れを確認しておきます。 […]
  • R言語 CRAN Task View:生存時間解析R言語 CRAN Task View:生存時間解析 CRAN Task View: Survival Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Arthur Allignol, Aurelien Latouche Contact: arthur.allignol at […]
  • R言語 CRAN Task View:関数データ解析R言語 CRAN Task View:関数データ解析 CRAN Task View: Functional Data Analysisの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Fabian Scheipl Contact: fabian.scheipl at […]
  • Googleアナリティクスとコレスポンデンス分析を用いた年齢別のユーザー像の捉え方Googleアナリティクスとコレスポンデンス分析を用いた年齢別のユーザー像の捉え方 ページビュー数やコンバージョン率を上げるためには、良質なコンテンツが大切であるとよく言われる。そして、良質なコンテンツを作成するためには、ユーザー像を具体的に思い描き、そのユーザーに向けてコンテンツを作成しなくてはならない。 ここでは、ページビュー数から年齢とページの関係性を視覚的に確認し、年齢別にユーザーがどのコンテンツに興味を抱くか、その傾向を探っていく。この傾向が […]
  • 平均的に分類する方法の考察(2)平均的に分類する方法の考察(2) 前回は、100人の学生のスコアを求めて、スコアの昇順に3つのグループに振り分ける方法を試した。振り分け方は、単純に、3つのグループに属する学生の少ないほうからである。前回の終わりに、各インデックスの平均値を考慮したものを考えてみると書いたが、その前に、一つ確認しておかなければならないことを忘れていたので、今回はその確認をしようと思う。 何を確認し忘れたかというと、全体の […]
MySQL 月の差分を計算する方法