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

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()関数を組み合わせれば、より柔軟な日付検索も可能になりますので、ぜひ活用してみてください。

  1. MySQLで再帰的なSELECTクエリを実行する方法【初心者向けに具体例つきで解説】

    MySQLでは、ユーザー定義変数(セッション変数)を活用することで、再帰的なSELECTクエリを実現できます。本記事では、実際にテーブルを作成し、データを挿入したうえで、再帰的なSELECTの具体的な書き方を順を追って解説します。 1. サンプルテーブルの作成 まず、再帰的なSELECTを試すためのサンプルテーブルを作成します。テーブルの作成にはCREATEコマンドを使用します。 mysql> CREATE table tblSelectDemo - > ( - > id int, - > name varchar(100) - > );

  2. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected