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!