MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【MySQL】日付から月の部分だけを取り出す方法|DATE_FORMAT()関数の使い方

MySQLで日付(datetime型)から「月」の部分だけを取得したい場合は、DATE_FORMAT()関数を使用するのが便利です。月名(英語表記)として取得するか、数値として取得するかによって、フォーマット指定子を使い分けます。

1. サンプルテーブルを作成する

まず、日付を格納するテーブルを作成します。

mysql> create table DemoTable753 (DueDate datetime);
Query OK, 0 rows affected (0.51 sec)

2. テーブルにレコードを挿入する

INSERT文を使って、いくつかのサンプルデータを登録します。

mysql> insert into DemoTable753 values('2019-06-21');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable753 values('2019-01-31');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable753 values('2018-12-01');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable753 values('2016-11-11');
Query OK, 1 row affected (0.23 sec)

3. 登録したレコードを確認する

SELECT文で全件を表示してみましょう。

mysql> select *from DemoTable753;

実行すると、以下のような結果が得られます。

+---------------------+
| DueDate             |
+---------------------+
| 2019-06-21 00:00:00 |
| 2019-01-31 00:00:00 |
| 2018-12-01 00:00:00 |
| 2016-11-11 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

4. 日付から月の部分だけを取得する

ここが本題です。DATE_FORMAT()関数にフォーマット指定子を渡すことで、月だけを抽出できます。月名で取得する場合は%M、ゼロ埋めの2桁の数値で取得する場合は%mを使用します。

mysql> select date_format(DueDate,'%M'),date_format(DueDate,'%m') from DemoTable753;

実行結果は以下の通りです。左側の列には月名(英語)、右側の列には数値形式の月が出力されています。

+---------------------------+---------------------------+
| date_format(DueDate,'%M') | date_format(DueDate,'%m') |
+---------------------------+---------------------------+
| June                      | 06                        |
| January                   | 01                        |
| December                  | 12                        |
| November                  | 11                        |
+---------------------------+---------------------------+
4 rows in set (0.00 sec)

補足:%Mと%m以外の指定子

  • %M:月名を英語のフルネームで返します(例:June)
  • %b:月名を省略形(3文字)で返します(例:Jun)
  • %m:月を01〜12のゼロ埋め2桁の数値で返します
  • %c:月を先頭のゼロなしの数値で返します(例:6)

なお、単純に月の数値だけが必要な場合は、SELECT MONTH(DueDate) FROM DemoTable753;のようにMONTH()関数を使う方法もあります。用途に応じて使い分けるとよいでしょう。

  1. MySQLで特定の日付のレコード数をカウントする方法

    MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946     (     ShippingDate date     ); Quer

  2. 【MySQL】DATE_FORMAT()でタイムスタンプから月名のみを取得する方法

    MySQLでTIMESTAMPから月名のみを取得する方法 MySQLで日時データ(TIMESTAMP)から「月名」だけを取り出したい場合は、DATE_FORMAT()関数を使用します。フォーマット指定子に%Mを指定することで、「January」「December」のような完全な英語の月名を簡単に取得できます。 1. サンプルテーブルを作成する まず、TIMESTAMP型のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1999 ( ArrivalDate timestamp ); Query OK, 0 rows affected