MySQLで日付を条件にレコードを検索する方法をわかりやすく解説
はじめに
MySQLのテーブルに保存された日付(DATE型)の値を条件として、特定のレコードを抽出したいケースはよくあります。この記事では、サンプルテーブル「detail_bday」を使いながら、日付によるレコード検索の基本的な方法を2通り紹介します。
サンプルデータの確認
まず、以下のような誕生日情報を持つテーブル「detail_bday」を用意します。
mysql> Select * from detail_bday; +----+---------+------------+ | Sr | Name | Birth_Date | +----+---------+------------+ | 1 | Saurabh | 1990-05-12 | | 2 | Raman | 1993-06-11 | | 3 | Gaurav | 1984-01-17 | | 4 | Rahul | 1993-06-11 | +----+---------+------------+ 4 rows in set (0.00 sec)
このテーブルには4件のレコードが登録されており、そのうち「Raman」と「Rahul」の2人が同じ誕生日(1993-06-11)を持っています。
方法1:WHERE句で直接比較する
最もシンプルな方法は、WHERE句でカラムと日付リテラルを直接比較することです。
mysql> Select * from detail_bday Where Birth_Date = '1993-06-11'; +----+-------+------------+ | Sr | Name | Birth_Date | +----+-------+------------+ | 2 | Raman | 1993-06-11 | | 4 | Rahul | 1993-06-11 | +----+-------+------------+ 2 rows in set (0.00 sec)
このクエリでは、Birth_Dateカラムの値が「1993-06-11」と完全に一致するレコードだけが返されます。結果として、該当する2件のレコードが取得できました。
方法2:DATE()関数を使って比較する
もうひとつの方法は、DATE()関数を使って比較するやり方です。
mysql> Select * from detail_bday Where Date(Birth_Date) = '1993-06-11'; +----+-------+------------+ | Sr | Name | Birth_Date | +----+-------+------------+ | 2 | Raman | 1993-06-11 | | 4 | Rahul | 1993-06-11 | +----+-------+------------+ 2 rows in set (0.00 sec)
DATE()関数は、引数に渡された値の日付部分のみを取り出す関数です。カラムがDATETIME型など時刻情報を含んでいる場合でも、日付部分だけで比較できるため、実務ではこちらの方が便利な場面が多くあります。
まとめ
MySQLで日付を条件にレコードを検索するには、次の2つの方法があります。
- 直接比較: WHERE句で「カラム名 = 'YYYY-MM-DD'」のように指定する。DATE型同士の単純な比較に適しています。
- DATE()関数を使う: DATETIME型など時刻を含むカラムから日付部分だけを取り出して比較できます。
どちらの方法も同じ結果を返しますが、対象カラムの型やインデックスの利用状況に応じて使い分けることで、より効率的なクエリを書くことができます。
-
【MySQL】日付がVARCHAR形式のカラムから特定のレコードを抽出する方法|STR_TO_DATE()の使い方
テーブルのカラムに保存されている日付がVARCHAR型(文字列)の場合、そのままでは日付として比較することができません。このようなケースでは、STR_TO_DATE()関数を使って文字列を日付値に変換してから比較することで、特定のレコードを正確に抽出できます。 1. テーブルの作成 まず、日付をVARCHAR型で格納するサンプルテーブルを作成しましょう。 mysql> create table DemoTable ( DueDate varchar(60) ); Query OK, 0 rows affected (0.71 sec) 2. サンプルデータの挿入 INSERTコマ
-
PythonとMySQLでテーブルからレコードを削除する方法を徹底解説
データベースを運用していると、テーブルから特定の行(レコード)を削除する必要が生じることがあります。例えば、クラスの生徒情報を管理するテーブルがあるとしましょう。ある生徒がクラスを退会した場合、その生徒の情報はもう不要になるため、該当する行をテーブルから削除する必要があります。 MySQLでは「DELETE FROM」ステートメントを使用して、テーブルから行やレコードを削除します。「WHERE」句を使うことで、削除対象の行を指定できます。なお、WHERE句を指定しない場合は、テーブル内のすべてのレコードが削除されてしまうため注意が必要です。 構文 すべての行を削除する場合 − DELETE F