Soms moet u gegevens van de afgelopen 24 uur ophalen of records van de afgelopen 24 uur selecteren voor rapportage en analyse. Hier leest u hoe u records van de afgelopen 24 uur in MySQL kunt ophalen. U kunt deze SQL-query gebruiken om rijen van de afgelopen 24 uur in uw database te krijgen.
Hoe u records van de afgelopen 24 uur kunt ophalen in MySQL
Hier is de SQL-query om records van de afgelopen 24 uur in MySQL te krijgen.
Stel dat u de volgende tabel verkoop(order_date, hoeveelheid) . heeft
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 |
+---------------------+--------+
Bonus lezen:hoe u het eerste record in elke groep in MySQL kunt krijgen
Verkrijg records van de afgelopen 24 uur in MySQL
Hier is de SQL-query om records van de afgelopen 24 uur op te halen in 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 |
+---------------------+--------+
In de bovenstaande SQL-query gebruiken we de MySQL-systeemfunctie now() om de huidige datetime te krijgen. Vervolgens gebruiken we de INTERVAL-clausule om die rijen te selecteren waar order_date valt binnen de afgelopen 24 uur na de huidige datetime.
Bonus lezen:hoe u records van de laatste 15 dagen in MySQL kunt krijgen
In plaats van het interval in uren op te geven, kunt u het ook in dag vermelden.
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 |
+---------------------+--------+
Met beide bovenstaande vragen kunt u records van de afgelopen 24 uur ophalen.
Bonus lezen:hoe u het laatste record in elke groep in MySQL kunt krijgen
Als u echter alleen rijen voor vandaag wilt selecteren, kunt u de volgende zoekopdracht gebruiken.
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 |
+---------------------+--------+
In de bovenstaande zoekopdracht krijgt u alleen rijen met de huidige datum en niet na 24 uur. We gebruiken de DATE-functie om alleen die rijen te selecteren waar de datumwaarde van order_date hetzelfde is als de datumwaarde van de now()-functie, dat wil zeggen de huidige datum.
Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!