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

MySQLで特定の日時のレコードを抽出する方法|BETWEEN句の使い方

MySQLで特定の日付・時刻に該当するレコードを抽出したい場合は、BETWEEN句を使うのが便利です。BETWEEN句は「ある値以上、ある値以下」という範囲条件を指定できる演算子で、datetime型のカラムに対して開始日時と終了日時を渡すことで、その範囲内のデータだけを簡単に取り出せます。

BETWEEN句の基本構文

select *from テーブル名 where 日時カラム between '開始日時' and '終了日時';

サンプルテーブルの作成

まず、動作を確認するためのテーブルを作成しましょう。以下のクエリを実行します。

mysql> create table AllRecordsFromadate
-> (
-> Id int,
-> Name varchar(100),
-> Age int,
-> AdmissionDate datetime
-> );
Query OK, 0 rows affected (0.53 sec)

テストデータの挿入

次に、INSERT文を使ってサンプルデータを登録します。

mysql> insert into AllRecordsFromadate values(101,'John',23,'2018-10-13');
Query OK, 1 row affected (0.18 sec)

mysql> insert into AllRecordsFromadate values(102,'Carol',24,'2014-12-5 12:34:50');
Query OK, 1 row affected (0.18 sec)

mysql> insert into AllRecordsFromadate values(103,'Mike',25,'2014-12-5 12:30:40');
Query OK, 1 row affected (0.23 sec)

mysql> insert into AllRecordsFromadate values(104,'Bob',24,'2015-10-7 11:10:20');
Query OK, 1 row affected (0.20 sec)

mysql> insert into AllRecordsFromadate values(105,'Sam',25,'2011-6-26 10:10:20');
Query OK, 1 row affected (0.11 sec)

登録済みデータの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from AllRecordsFromadate;

実行結果は以下の通りです。

+------+-------+------+---------------------+
| Id   | Name  | Age  | AdmissionDate       |
+------+-------+------+---------------------+
| 101  | John  | 23   | 2018-10-13 00:00:00 |
| 102  | Carol | 24   | 2014-12-05 12:34:50 |
| 103  | Mike  | 25   | 2014-12-05 12:30:40 |
| 104  | Bob   | 24   | 2015-10-07 11:10:20 |
| 105  | Sam   | 25   | 2011-06-26 10:10:20 |
+------+-------+------+---------------------+
5 rows in set (0.00 sec)

特定の日時範囲でレコードを抽出する

それでは、BETWEEN句を使って特定の日時の範囲に含まれるレコードのみを取得してみます。ここでは「2014年12月5日の10:00:00〜12:50:58」に該当するデータを抽出します。

mysql> select *from AllRecordsFromadate where AdmissionDate between '2014-12-05 10:00:00' and '2014-12-05 12:50:58';

実行結果は以下の通りです。

+------+-------+------+---------------------+
| Id   | Name  | Age  | AdmissionDate       |
+------+-------+------+---------------------+
| 102  | Carol | 24   | 2014-12-05 12:34:50 |
| 103  | Mike  | 25   | 2014-12-05 12:30:40 |
+------+-------+------+---------------------+
2 rows in set (0.00 sec)

まとめ

このように、BETWEEN句に開始日時と終了日時を指定するだけで、特定の日時範囲に該当するレコードを簡単に絞り込むことができます。なお、BETWEENは両端の値を含む(以上・以下)ため、指定した境界の日時そのものも検索結果に含まれる点に注意してください。

  1. 【MySQL】日付レコードから曜日を減算し、曜日名とともに結果を表示する方法

    はじめにMySQLで保存された日付レコードから、その週の開始日(月曜日)を計算して減算し、曜日名とともに結果を表示したい場合があります。このような処理には DATE_FORMAT() 関数を使用します。SUBDATE() と WEEKDAY() を組み合わせることで、各日付が属する週の月曜日の日付を「Mon 19 Oct」のような形式で取得できます。以下、具体的な手順をサンプルコードとともに解説します。1. テーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable1820 ( AdmissionDate

  2. MySQLクエリで日付・時刻の値を秒単位で加算(インクリメント)する方法

    MySQLで日付・時刻(DATETIME)の値に指定した秒数を加算したい場合は、DATE_ADD()関数とINTERVAL句を組み合わせて使用します。この記事では、実際にテーブルを作成し、秒単位で時刻をインクリメントする手順を具体例とともに解説します。 サンプルテーブルの作成 まず、DATETIME型のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1867     (     ArrivalTime datetime    &