PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изберете записи от последните 24 часа с помощта на PostgreSQL

Понякога може да се наложи да получите записи от последните 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 улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте го днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА:функциите в индексния израз трябва да бъдат маркирани като НЕИЗМЕНИМИ в Postgres

  2. Как ключовите думи НЕИЗМЕНЯЕМ, СТАБИЛЕН и ПРОМЕНЛИВ влияят върху поведението на функцията?

  3. Как да потърся json колона за празни обекти?

  4. Услуга за база данни PostgreSQL

  5. Кога имената на колони или таблици в Postgres се нуждаят от кавички и кога не?