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

MySQLで過去60分間のレコードを取得する方法

MySQLで過去60分間のレコードを取得したい場合は、INTERVALを使うことで簡単に実現できます。日時カラムとNOW()関数を組み合わせ、指定した時間幅だけ遡った時刻以降のデータを絞り込むのが基本的な考え方です。

基本構文

過去60分間のレコードを抽出するには、以下のような構文を使用します。

SELECT * FROM テーブル名 WHERE カラム名 > NOW() - INTERVAL 60 MINUTE;

このクエリでは、現在時刻(NOW())から60分前の時刻より後のレコードのみが返されます。

実際に試してみよう

1. サンプルテーブルを作成する

まず、日時型(DATETIME)のカラムを持つテーブルを作成します。

mysql> CREATE TABLE DemoTable
(
    ArrivalTime datetime
);
Query OK, 0 rows affected (0.61 sec)

2. 現在の日時を確認する

NOW()関数で現在の日時を確認しておきましょう。

mysql> SELECT NOW();
+---------------------+
| now()               |
+---------------------+
| 2019-09-17 00:04:54 |
+---------------------+
1 row in set (0.00 sec)

3. レコードを挿入する

INSERTコマンドを使って、いくつかのレコードをテーブルに登録します。

mysql> INSERT INTO DemoTable VALUES('2019-09-16 08:00:00');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('2019-09-17 11:00:00');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('2019-09-12 12:00:00');
Query OK, 1 row affected (0.15 sec)

4. 登録されたレコードを確認する

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

mysql> SELECT * FROM DemoTable;

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

+---------------------+
| ArrivalTime         |
+---------------------+
| 2019-09-16 08:00:00 |
| 2019-09-17 11:00:00 |
| 2019-09-12 12:00:00 |
+---------------------+
3 rows in set (0.00 sec)

過去60分間のレコードを抽出するクエリ

それでは、本題である「過去60分間のレコードを取得する」クエリを実行してみましょう。

mysql> SELECT * FROM DemoTable WHERE ArrivalTime > NOW() - INTERVAL 60 MINUTE;

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

+---------------------+
| ArrivalTime         |
+---------------------+
| 2019-09-17 11:00:00 |
+---------------------+
1 row in set (0.00 sec)

現在時刻から60分以内のレコードのみが正しく抽出されていることがわかります。それより古い日時のレコードは結果から除外されています。

補足:INTERVALの応用例

INTERVALは時間単位を自由に変更できるため、さまざまな期間指定に対応できます。

  • 過去30分:NOW() - INTERVAL 30 MINUTE
  • 過去24時間:NOW() - INTERVAL 24 HOUR
  • 過去7日間:NOW() - INTERVAL 7 DAY

また、NOW()の代わりに特定の日時を指定すれば、任意の時点を基準とした抽出も可能です。ログ分析やリアルタイム監視など、直近のデータを扱う場面でぜひ活用してください。

  1. MySQLで最後の30行を取得する方法(ORDER BY DESCとLIMITの使い方)

    MySQLでテーブルの最後の30行を取得したい場合は、ORDER BY DESC(降順ソート)とLIMIT 30を組み合わせるのが基本です。降順に並べ替えることで、最新(またはIDが大きい)レコードが先頭に来るため、先頭から30件を取り出すことで実質的に「最後の30行」が取得できます。基本構文SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 30;それでは、実際にサンプルテーブルを作成して動作を確認していきましょう。1. テーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable1567

  2. MySQLに日付レコードを挿入する最も簡単な方法は?STR_TO_DATE()関数の使い方を解説

    MySQLで日付レコードを挿入・変換するには?MySQLでは、STR_TO_DATE() 関数を使うことで、文字列として保存された日付データを日付形式に変換できます。以下が基本の構文です。SELECT STR_TO_DATE(yourColumnName, %b %Y) FROM yourTableName;この記事では、実際にテーブルを作成し、「Jan 2018」のような「月 年」形式の文字列データを日付に変換する手順を、具体例とともにわかりやすく解説します。ステップ1:テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは入社年月を格納するカラムを持つテーブルを定義します。