PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wybrać rekordy z ostatnich 24 godzin za pomocą PostgreSQL

Czasami może być konieczne pobranie rekordów z ostatnich 24 godzin lub wybranie wierszy z ostatnich 24 godzin do raportowania i analizy. Oto jak wybrać rekordy z ostatnich 24 godzin za pomocą PostgreSQL.


Pobierz rekordy z ostatnich 24 godzin w PostgreSQL

Oto zapytanie SQL, aby pobrać rekordy z ostatnich 24 godzin w PostgreSQL. Załóżmy, że masz następującą tabelę sprzedaż(data_zamówienia, kwota) .

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

Przeczytaj bonus:Jak zwiększyć maksymalną liczbę połączeń w PostgreSQL


Pobierz wiersze z ostatnich 24 godzin w PostgreSQL

Oto zapytanie SQL, aby uzyskać rekordy z ostatnich 24 godzin w 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 |
+---------------------+--------+

W powyższym zapytaniu SQL używamy funkcji systemowej PostgreSQL now() aby uzyskać aktualną datę i godzinę. Następnie używamy klauzuli INTERVAL, aby wybrać te wiersze, w których data_zamówienia przypada w ciągu ostatnich 24 godzin od aktualnej daty i godziny.

Przeczytaj dodatkowe:Wskazówki dotyczące dostrajania wydajności PostgreSQL

Możesz także określić przedział czasu w dniach zamiast w godzinach.

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

Przeczytaj bonus:5 najlepszych narzędzi do monitorowania zapytań PostgreSQL

Jeśli chcesz wybrać rekordy tylko z bieżącego dnia, a nie z ostatnich 24 godzin, użyj następującego zapytania.

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

W powyższym zapytaniu otrzymasz wiersze tylko z aktualną datą, a nie z ostatnich 24 godzin. Używamy funkcji DATE_TRUNCT, aby wybrać tylko te wiersze, w których wartość daty w order_date jest taka sama jak wartość daty w zmiennej systemowej CURRENT_DATE, czyli data bieżąca.

Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql - tworzenie kopii zapasowej bazy danych i przywracanie na innego właściciela?

  2. Czy UUID jako klucz podstawowy w PostgreSQL da złą wydajność indeksu?

  3. Błąd Heroku PostgreSQL GROUP_BY w aplikacji Rails

  4. Raport trendów PostgreSQL 2019:chmura prywatna i publiczna, migracje, kombinacje baz danych i najważniejsze powody

  5. Jaka jest domyślna nazwa ograniczenia w PostgreSQL?