Đôi khi, bạn có thể cần lấy hồ sơ từ 24 giờ qua hoặc chọn các hàng trong 24 giờ qua để báo cáo và phân tích. Đây là cách chọn bản ghi từ 24 giờ qua bằng PostgreSQL.
Nhận bản ghi từ 24 giờ qua trong PostgreSQL
Đây là truy vấn SQL để lấy bản ghi từ 24 giờ qua trong PostgreSQL. Giả sử bạn có bảng sau doanh số (ngày_đặt_hàng, số tiền) .
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 | +---------------------+--------+
Phần thưởng đọc:Cách tăng kết nối tối đa trong PostgreSQL
Nhận các hàng từ 24 giờ qua trong PostgreSQL
Đây là truy vấn SQL để lấy các bản ghi từ 24 giờ qua trong PostgreSQL.
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 | +---------------------+--------+
Trong truy vấn SQL ở trên, chúng tôi sử dụng hàm hệ thống PostgreSQL now () để có được ngày giờ hiện tại. Sau đó, chúng tôi sử dụng mệnh đề INTERVAL để chọn các hàng có order_date nằm trong vòng 24 giờ kể từ ngày hiện tại.
Phần thưởng đọc:Mẹo điều chỉnh hiệu suất PostgreSQL
Bạn cũng có thể chỉ định khoảng thời gian theo ngày, thay vì giờ.
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 | +---------------------+--------+
Phần thưởng đọc:5 công cụ giám sát truy vấn PostgreSQL hàng đầu
Nếu bạn chỉ muốn chọn các bản ghi cho ngày hôm nay và không phải 24 giờ qua, hãy sử dụng truy vấn sau.
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 | +---------------------+--------+
Trong truy vấn trên, bạn sẽ nhận được các hàng chỉ ngày hiện tại và không phải 24 giờ qua. Chúng tôi sử dụng hàm DATE_TRUNCT để chỉ chọn những hàng có giá trị ngày của order_date giống với giá trị ngày của biến hệ thống CURRENT_DATE, tức là ngày hiện tại.
Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!