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

PostgreSQLを使用して過去24時間からレコードを選択する方法

    レポートと分析のために、過去24時間のレコードを取得したり、過去24時間の行を選択したりする必要がある場合があります。 PostgreSQLを使用して過去24時間のレコードを選択する方法は次のとおりです。


    PostgreSQLで過去24時間のレコードを取得

    これは、PostgreSQLで過去24時間のレコードを取得するためのSQLクエリです。次のテーブルがあるとしますsales(order_date、amount)

    postgres-# create table sales(order_date timestamp, amount int);
    
    postgres-# 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);
    
    postgres-# 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 |
    +---------------------+--------+

    ボーナスリード:PostgreSQLで最大接続数を増やす方法


    PostgreSQLで過去24時間の行を取得する

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

    postgres-# select * from sales
           where order_date > now() - interval '24 hours';
    +---------------------+--------+
    | 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クエリでは、PostgreSQLシステム関数 now()を使用しています。 現在の日時を取得します。次に、INTERVAL句を使用して、 order_dateが存在する行を選択します。 現在の日時から過去24時間以内に該当します。

    ボーナスリード:PostgreSQLパフォーマンスチューニングのヒント

    時間間隔を時間ではなく日数で指定することもできます。

    postgres-# 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 |
    +---------------------+--------+
    

    ボーナスリード:トップ5PostgreSQLクエリ監視ツール

    過去24時間ではなく、当日のレコードのみを選択する場合は、次のクエリを使用します。

    postgres-# select * from sales
          where date_trunc('date',order_date) = current_date;
    +---------------------+--------+
    | 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_TRUNCT関数を使用して、order_dateの日付値がCURRENT_DATEシステム変数の日付値と同じである行、つまり現在の日付のみを選択します。

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

    1. SQuirrelSQLクライアントをインストールする方法

    2. 最短時間で1,000万件のレコードを挿入するにはどうすればよいですか?

    3. データベースアクセス許可の設定

    4. インデックスが多いテーブルの一括挿入が遅い