Czasami może być konieczne pobranie danych z ostatnich 24 godzin lub wybranie rekordów z ostatnich 24 godzin w celu raportowania i analizy. Oto jak uzyskać rekordy z ostatnich 24 godzin w MySQL. Możesz użyć tego zapytania SQL, aby pobrać wiersze z ostatnich 24 godzin w swojej bazie danych.
Jak uzyskać rekordy z ostatnich 24 godzin w MySQL
Oto zapytanie SQL, aby uzyskać rekordy z ostatnich 24 godzin w MySQL.
Załóżmy, że masz następującą tabelę sprzedaż(data_zamówienia, kwota)
mysql> create table sales(order_date datetime, amount int); mysql> 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); mysql> 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 zdobyć pierwszy rekord w każdej grupie w MySQL
Pobierz rekordy z ostatnich 24 godzin w MySQL
Oto zapytanie SQL, aby pobrać rekordy z ostatnich 24 godzin w MySQL
mysql> select * from sales where order_date > now() - interval 24 hour; +---------------------+--------+ | 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 MySQL 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 bonus:Jak uzyskać rekordy z ostatnich 15 dni w MySQL
Zamiast określać interwał w godzinach, możesz również podać go w ciągu dnia.
mysql> 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 | +---------------------+--------+
Oba powyższe zapytania pomogą Ci uzyskać zapisy z ostatnich 24 godzin.
Przeczytaj bonus:Jak uzyskać ostatni rekord w każdej grupie w MySQL
Jeśli jednak chcesz wybrać wiersze tylko dla dnia bieżącego, możesz użyć następującego zapytania.
mysql> select * from sales where date(order_date) = date(now()); +---------------------+--------+ | 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, aby wybrać tylko te wiersze, w których wartość daty w order_date jest taka sama jak wartość daty w funkcji now(), 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ś!