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()の代わりに特定の日時を指定すれば、任意の時点を基準とした抽出も可能です。ログ分析やリアルタイム監視など、直近のデータを扱う場面でぜひ活用してください。
-
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
-
MySQLに日付レコードを挿入する最も簡単な方法は?STR_TO_DATE()関数の使い方を解説
MySQLで日付レコードを挿入・変換するには?MySQLでは、STR_TO_DATE() 関数を使うことで、文字列として保存された日付データを日付形式に変換できます。以下が基本の構文です。SELECT STR_TO_DATE(yourColumnName, %b %Y) FROM yourTableName;この記事では、実際にテーブルを作成し、「Jan 2018」のような「月 年」形式の文字列データを日付に変換する手順を、具体例とともにわかりやすく解説します。ステップ1:テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは入社年月を格納するカラムを持つテーブルを定義します。