MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)
MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。
1. サンプルテーブルの作成
まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。
mysql> create table DemoTable1599
-> (
-> Shippingdate datetime
-> );
Query OK, 0 rows affected (0.78 sec)
2. テーブルへのデータ挿入
次に、INSERT文を使って複数の日付データを登録します。年もバラバラの12月のデータを含めておくのがポイントです。
mysql> insert into DemoTable1599 values('2019-10-21');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable1599 values('2018-12-12');
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable1599 values('2015-11-21');
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable1599 values('2017-12-31');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1599 values('2018-12-26');
Query OK, 1 row affected (0.17 sec)3. 登録したデータの確認
SELECT文ですべてのレコードを表示して、正しく登録されているか確認しましょう。
mysql> select * from DemoTable1599;
実行すると、以下のような結果が表示されます。
+---------------------+
| Shippingdate |
+---------------------+
| 2019-10-21 00:00:00 |
| 2018-12-12 00:00:00 |
| 2015-11-21 00:00:00 |
| 2017-12-31 00:00:00 |
| 2018-12-26 00:00:00 |
+---------------------+
5 rows in set (0.00 sec)
4. MONTH()関数で月を指定して抽出する
いよいよ本題です。WHERE句の中でMONTH()関数を使い、「12月」のレコードだけを抽出してみましょう。
mysql> select * from DemoTable1599
-> where month(Shippingdate)=12;
実行結果は以下の通りです。年に関係なく、12月のデータのみが取得できていることがわかります。
+---------------------+
| Shippingdate |
+---------------------+
| 2018-12-12 00:00:00 |
| 2017-12-31 00:00:00 |
| 2018-12-26 00:00:00 |
+---------------------+
3 rows in set (0.00 sec)
まとめ
MONTH()関数は、datetime型やdate型の値から月の数値(1〜12)を取り出す関数です。WHERE句で month(カラム名) = 数値 のように指定することで、年を問わず特定の月のレコードを簡単に絞り込めます。同様に、YEAR()関数やDAY()関数を組み合わせれば、より柔軟な日付検索も可能になりますので、ぜひ活用してみてください。
-
MySQLで再帰的なSELECTクエリを実行する方法【初心者向けに具体例つきで解説】
MySQLでは、ユーザー定義変数(セッション変数)を活用することで、再帰的なSELECTクエリを実現できます。本記事では、実際にテーブルを作成し、データを挿入したうえで、再帰的なSELECTの具体的な書き方を順を追って解説します。 1. サンプルテーブルの作成 まず、再帰的なSELECTを試すためのサンプルテーブルを作成します。テーブルの作成にはCREATEコマンドを使用します。 mysql> CREATE table tblSelectDemo - > ( - > id int, - > name varchar(100) - > );
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected