Det er nyttigt at hente sidste 1 times optegnelser eller hente de sidste 1 times rækker til rapportering og analyse. I denne artikel vil vi se på, hvordan du får sidste 1 times data i MySQL.
Sådan får du sidste 1 times data i MySQL
Det er meget nemt at vælge sidste 1 times data i MySQL ved hjælp af INTERVAL-klausulen. Lad os sige, at du har følgende tabel salg(id, ordre_dato, beløb) .
mysql> create table sales( id int, order_date datetime, amount int); mysql> insert into sales(id, order_date, amount) values(1, '2021-02-02 08:15:00',250), (2, '2021-02-02 08:30:00',150), (3, '2021-02-02 08:55:00',200), (4, '2021-02-02 09:15:00',125), (5, '2021-02-02 09:30:00',200), (6, '2021-02-02 09:45:00',250); mysql> select * from sales; +------+---------------------+--------+ | id | order_date | amount | +------+---------------------+--------+ | 1 | 2021-02-02 08:15:00 | 250 | | 2 | 2021-02-02 08:30:00 | 150 | | 3 | 2021-02-02 08:55:00 | 200 | | 4 | 2021-02-02 09:15:00 | 125 | | 5 | 2021-02-02 09:30:00 | 200 | | 6 | 2021-02-02 09:45:00 | 250 | +------+---------------------+--------+
Her er SQL'en til at vise seneste tid ved at bruge now() funktion.
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2021-02-02 09:48:27 | +---------------------+
Her er SQL'en for at få sidste 1 times data i MySQL.
mysql> select * from sales where order_date > now() - interval 1 hour; +------+---------------------+--------+ | id | order_date | amount | +------+---------------------+--------+ | 3 | 2021-02-02 08:55:00 | 200 | | 4 | 2021-02-02 09:15:00 | 125 | | 5 | 2021-02-02 09:30:00 | 200 | | 6 | 2021-02-02 09:45:00 | 250 | +------+---------------------+--------+
I ovenstående forespørgsel vælger vi kun de rækker, hvis ordre_date falder inden for sidste 1 times interval. Vi bruger INTERVAL-sætning til nemt at trække 1 times interval fra det nuværende tidspunkt opnået ved hjælp af now() funktion.
Sådan får du aktuelle timedata i MySQL
Nogle gange skal du muligvis få optegnelser over aktuelle timer i MySQL. Her er SQL-forespørgslen til at hente aktuelle timedata.
mysql> select * from sales where date(order_date)=date(now()) and hour(order_date)=hour(now()); +------+---------------------+--------+ | id | order_date | amount | +------+---------------------+--------+ | 4 | 2021-02-02 09:15:00 | 250 | | 5 | 2021-02-02 09:30:00 | 250 | | 6 | 2021-02-02 09:45:00 | 250 | +------+---------------------+--------+
I ovenstående SQL-forespørgsel vælger vi kun de poster, hvis ordre_date kolonnens DATO- og HOUR-værdier er de samme som for nuværende dato og klokkeslæt. Vi bruger DATE- og HOUR-funktionerne til at hente dato- og timeværdier fra datetime-værdier.
Har du brug for et rapporteringsværktøj til MySQL? Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!