sql >> データベース >  >> RDS >> Mysql

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

    レポートと分析のために、過去24時間のデータを取得したり、過去24時間のレコードを選択したりする必要がある場合があります。 MySQLで過去24時間のレコードを取得する方法は次のとおりです。このSQLクエリを使用して、データベース内の過去24時間の行を取得できます。

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

    これは、MySQLで過去24時間のレコードを取得するためのSQLクエリです。

    次のテーブルがあるとしますsales(order_date、amount)

    mysql> create table sales(order_date datetime, amount int);
    
    mysql> insert into sales(order_date,amount) 
         values('2020-06-07 01:00:00',200),
         ('2020-06-07 02:30:00',350),
         ('2020-06-07 04:40:00',410),
         ('2020-06-07 12:10:00',600),
         ('2020-06-07 15:00:00',300),
         ('2020-06-07 18:55:00',450),
         ('2020-06-07 21:00:00',1200),
         ('2020-06-08 03:00:00',800),
         ('2020-06-08 05:30:00',900),
         ('2020-06-08 07:20:00',100),
         ('2020-06-08 10:10:00',250),
         ('2020-06-08 12:05:00',300),
         ('2020-06-08 13:30:00',200);
    
    mysql> select * from sales;
    +---------------------+--------+
    | order_date          | amount |
    +---------------------+--------+
    | 2020-06-07 01:00:00 |    200 |
    | 2020-06-07 02:30:00 |    350 |
    | 2020-06-07 04:40:00 |    410 |
    | 2020-06-07 12:10:00 |    600 |
    | 2020-06-07 15:00:00 |    300 |
    | 2020-06-07 18:55:00 |    450 |
    | 2020-06-07 21:00:00 |   1200 |
    | 2020-06-08 03:00:00 |    800 |
    | 2020-06-08 05:30:00 |    900 |
    | 2020-06-08 07:20:00 |    100 |
    | 2020-06-08 10:10:00 |    250 |
    | 2020-06-08 12:05:00 |    300 |
    | 2020-06-08 13:30:00 |    200 |
    +---------------------+--------+
    

    ボーナスリード:MySQLの各グループで最初のレコードを取得する方法

    MySQLで過去24時間のレコードを取得する

    MySQLで過去24時間のレコードを取得するためのSQLクエリは次のとおりです

    mysql> select * from sales
           where order_date > now() - interval 24 hour;
    +---------------------+--------+
    | order_date          | amount |
    +---------------------+--------+
    | 2020-06-07 15:00:00 |    300 |
    | 2020-06-07 18:55:00 |    450 |
    | 2020-06-07 21:00:00 |   1200 |
    | 2020-06-08 03:00:00 |    800 |
    | 2020-06-08 05:30:00 |    900 |
    | 2020-06-08 07:20:00 |    100 |
    | 2020-06-08 10:10:00 |    250 |
    | 2020-06-08 12:05:00 |    300 |
    | 2020-06-08 13:30:00 |    200 |
    +---------------------+--------+
    

    上記のSQLクエリでは、MySQLシステム関数 now()を使用します。 現在の日時を取得します。次に、INTERVAL句を使用して、 order_dateが存在する行を選択します。 現在の日時から過去24時間以内に該当します。

    ボーナスリード:MySQLで過去15日間のレコードを取得する方法

    間隔を時間単位で指定する代わりに、日単位で指定することもできます。

    mysql> select * from sales
         where order_date > now() - interval 1 day;
    +---------------------+--------+
    | order_date          | amount |
    +---------------------+--------+
    | 2020-06-07 15:00:00 |    300 |
    | 2020-06-07 18:55:00 |    450 |
    | 2020-06-07 21:00:00 |   1200 |
    | 2020-06-08 03:00:00 |    800 |
    | 2020-06-08 05:30:00 |    900 |
    | 2020-06-08 07:20:00 |    100 |
    | 2020-06-08 10:10:00 |    250 |
    | 2020-06-08 12:05:00 |    300 |
    | 2020-06-08 13:30:00 |    200 |
    +---------------------+--------+
    

    上記の両方のクエリは、過去24時間のレコードを取得するのに役立ちます。

    ボーナスリード:MySQLの各グループの最後のレコードを取得する方法

    ただし、現在の行のみを選択する場合は、次のクエリを使用できます。

    mysql> select * from sales
          where date(order_date) = date(now());
    +---------------------+--------+
    | order_date          | amount |
    +---------------------+--------+
    | 2020-06-08 03:00:00 |    800 |
    | 2020-06-08 05:30:00 |    900 |
    | 2020-06-08 07:20:00 |    100 |
    | 2020-06-08 10:10:00 |    250 |
    | 2020-06-08 12:05:00 |    300 |
    | 2020-06-08 13:30:00 |    200 |
    +---------------------+--------+
    

    上記のクエリでは、現在の日付のみの行が取得され、過去24時間は取得されません。 DATE関数を使用して、order_dateの日付値がnow()関数の日付値と同じである行、つまり現在の日付のみを選択します。

    Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. IRIWorkbenchでのインクリメンタルデータレプリケーション

    2. SQLServerで日付を比較する方法

    3. MS SQLServer2017標準でのフェイルオーバーの実装

    4. 大きなSQLファイルをインポートするときにMySQLサーバーがなくなりました