レポートと分析のために、過去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を使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日それを試してみてください!