MySQLで時間差を取得するクエリの書き方を解説
MySQLで現在時刻との時間差を取得する方法
MySQLでは、NOW() 関数と INTERVAL を組み合わせることで、「現在時刻から一定時間以内」のレコードを簡単に抽出できます。ここでは、現在時刻から5時間以内に到着したデータを取得するクエリを例に、その手順を解説します。
1. サンプルテーブルの作成
まず、日時を格納するカラムを持つテーブルを作成します。
mysql> create table DemoTable1570
-> (
-> ArrivalTime datetime
-> );
Query OK, 0 rows affected (0.87 sec)
2. テストデータの挿入
INSERT コマンドを使って、複数のレコードを登録します。
mysql> insert into DemoTable1570 values('2019-10-15 5:10:00');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable1570 values('2019-10-15 23:00:00');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1570 values('2019-10-15 23:10:00');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1570 values('2019-10-15 16:10:00');
Query OK, 1 row affected (0.15 sec)3. 登録データの確認
SELECT 文ですべてのレコードを表示します。
mysql> select * from DemoTable1570;
実行結果は以下のとおりです。
+---------------------+
| ArrivalTime |
+---------------------+
| 2019-10-15 05:10:00 |
| 2019-10-15 23:00:00 |
| 2019-10-15 23:10:00 |
| 2019-10-15 16:10:00 |
+---------------------+
4 rows in set (0.00 sec)
4. 現在の日時を確認
NOW() 関数で現在の日時を取得できます。
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2019-10-15 22:26:14 |
+---------------------+
1 row in set (0.00 sec)
5. 時間差を条件にデータを抽出するクエリ
現在時刻から5時間以内のレコードを取得するには、NOW() - INTERVAL 5 HOUR を条件に指定します。
mysql> select * from DemoTable1570
-> where ArrivalTime > now() - interval 5 hour;
実行結果は以下のとおりです。
+---------------------+
| ArrivalTime |
+---------------------+
| 2019-10-15 23:00:00 |
| 2019-10-15 23:10:00 |
+---------------------+
2 rows in set (0.00 sec)
ポイント解説
now() - interval 5 hour は「現在時刻から5時間前の時刻」を表します。この値より後の ArrivalTime を持つレコードのみが抽出されるため、結果として 22:26:14 以降 の2件(23:00:00 と 23:10:00)が表示されました。
なお、INTERVAL の単位は自由に変更できます。例えば、interval 30 minute(30分前)、interval 1 day(1日前)、interval 7 day(1週間前)など、用途に応じて柔軟に指定可能です。この手法は、直近のアクセスログや最新の注文データなど、「最近のデータだけを取得したい」場面で非常に役立ちます。
-
【MySQL】1つのクエリで複数の行を取得する方法(IN演算子の使い方)
概要MySQLで1つのクエリだけで複数の行を取得したい場合は、IN演算子を使用します。WHERE句の中で IN(値1, 値2, …) のようにカンマ区切りで条件を指定すると、いずれかの値に一致するすべての行をまとめて取得できます。本記事では、サンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。1. テーブルを作成するまず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, Name varchar(100));Que
-
MySQLのバージョンを確認する方法をわかりやすく解説
この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ