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

MySQLのWHERE句で日付関数を使う方法をわかりやすく解説

WHERE句とMySQLの日付関数を組み合わせる方法

MySQLでは、WHERE句に日付関数(YEAR()、MONTH()、DAY()など)を組み合わせることで、指定した条件に基づいて行を効率的に絞り込むことができます。ここでは、実際のテーブルデータを使って具体的な使い方を紹介します。

サンプルデータの確認

まず、以下のような「Collegedetail」テーブルがあるとします。

mysql> Select * from Collegedetail;
+------+---------+------------+
| ID   | Country | Estb       |
+------+---------+------------+
| 111  | INDIA   | 2010-05-01 |
| 130  | INDIA   | 1995-10-25 |
| 139  | USA     | 1994-09-25 |
| 1539 | UK      | 2001-07-23 |
| 1545 | Russia  | 2010-07-30 |
+------+---------+------------+
5 rows in set (0.00 sec)

YEAR()関数で特定の年のデータを抽出する

例えば、「2010年に設立された大学だけの詳細情報を取得したい」という場合、WHERE句の中でYEAR()関数を使用した次のようなクエリを実行します。

mysql> Select * from Collegedetail WHERE YEAR(Estb) = '2010';
+------+---------+------------+
| ID   | Country | Estb       |
+------+---------+------------+
| 111  | INDIA   | 2010-05-01 |
| 1545 | Russia  | 2010-07-30 |
+------+---------+------------+
2 rows in set (0.07 sec)

このクエリでは、Estbカラム(設立日)からYEAR()関数によって「年」の部分だけを取り出し、それが「2010」と一致する行のみをフィルタリングしています。その結果、2010年5月1日に設立されたINDIAの大学(ID: 111)と、2010年7月30日に設立されたRussiaの大学(ID: 1545)の2行が返されました。

その他の活用例

同様の考え方は、他の日付関数にも応用できます。例えば:

  • MONTH():特定の月に設立されたデータを抽出する場合
  • DAY():特定の日付に該当するレコードを検索する場合
  • CURDATE():現在の日付と比較して条件を絞り込む場合

このように、WHERE句と日付関数を組み合わせれば、日付データに対する柔軟で強力な条件検索が可能になります。ただし、インデックスが設定されたカラムに関数を適用するとインデックスが利用されなくなる場合があるため、大量のデータを扱う際はパフォーマンスへの影響にも注意しましょう。

  1. MySQLビュー(VIEW)にWHERE句を使う方法をわかりやすく解説

    MySQLビューでWHERE句を使用する方法MySQLでは、作成済みのビュー(VIEW)に対して、通常のテーブルと同じようにWHERE句を指定してデータを絞り込むことができます。基本となる構文は以下の通りです。select * from yourViewName where yourColumnName=yourValue;それでは、実際にサンプルを使って手順を確認していきましょう。1. サンプルテーブルを作成するまず、学生情報を格納するテーブルを作成します。mysql> create table DemoTable1432 -> ( -> StudentId

  2. MySQLでCURDATE()とLIKE句を使った部分一致検索の方法

    MySQLにはCONTAINS()という名前の関数は存在しません。そのため、現在の日付(CURDATE())に関連する文字列で部分一致検索を行いたい場合は、CONCAT()関数とLIKE句を組み合わせる方法が有効です。本記事では、実際にサンプルテーブルを作成しながら、その手順を順番に解説していきます。現在の日付を確認するまず、CURDATE()関数を使って現在の日付を取得してみましょう。mysql> select curdate();実行結果は以下の通りです。+------------+ | curdate() | +------------+ | 2019-11-28 | +----