【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()関数を使う方法もあります。用途に応じて使い分けるとよいでしょう。
-
MySQLで特定の日付のレコード数をカウントする方法
MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946 ( ShippingDate date ); Quer
-
【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