Понякога може да се наложи да получите записи от последните 24 часа или да изберете редове от последните 24 часа за отчитане и анализ. Ето как да изберете записи от последните 24 часа с помощта на PostgreSQL.
Вземете записи от последните 24 часа в PostgreSQL
Ето SQL заявката за получаване на записи от последните 24 часа в PostgreSQL. Да приемем, че имате следната таблица продажби(дата_на_поръчка, сума) .
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
Вземете редове от последните 24 часа в PostgreSQL
Ето SQL заявката за получаване на записи от последните 24 часа в 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 | +---------------------+--------+
В горната 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 | +---------------------+--------+
Бонус за четене:Топ 5 PostgreSQL инструменти за наблюдение на заявки
Ако искате да изберете записи само за настоящия ден, а не за последните 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 улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте го днес!