Ibland kan du behöva hämta senaste månadsrekord eller få rader från föregående månad. Så här får du senaste månadsdata i MySQL.
Hur får du senaste månadsdata i MySQL
Här är stegen för att få senaste månadsdata i MySQL.
Låt oss säga att du har följande tabell order(id, order_date, summa) i MySQL som innehåller dagliga orderbelopp.
mysql> create table orders(id int, order_date date, amount int);
mysql> insert into orders(id,order_date, amount)
values(1,'2020-07-25',250),
(2,'2020-07-26',350),
(3,'2020-07-27',200),
(4,'2020-07-28',150),
(5,'2020-07-29',350),
(6,'2020-07-30',300),
(7,'2020-07-31',250),
(8,'2020-08-01',550),
(9,'2020-08-02',350),
(10,'2020-08-03',250),
(11,'2020-08-04',200);
mysql> select * from orders;
+------+------------+--------+
| id | order_date | amount |
+------+------------+--------+
| 1 | 2020-07-25 | 250 |
| 2 | 2020-07-26 | 350 |
| 3 | 2020-07-27 | 200 |
| 4 | 2020-07-28 | 150 |
| 5 | 2020-07-29 | 350 |
| 6 | 2020-07-30 | 300 |
| 7 | 2020-07-31 | 250 |
| 8 | 2020-08-01 | 550 |
| 9 | 2020-08-02 | 350 |
| 10 | 2020-08-03 | 250 |
| 11 | 2020-08-04 | 200 |
+------+------------+--------+
Bonus Läs:Hur man kopierar tabell i MySQL
Hur får du senaste månadsrekord i MySQL
Här är SQL-frågan för att få senaste månadsrekord i MySQL
mysql> select * from orders
where month(order_date)=month(now())-1;
+------+------------+--------+
| id | order_date | amount |
+------+------------+--------+
| 1 | 2020-07-25 | 250 |
| 2 | 2020-07-26 | 350 |
| 3 | 2020-07-27 | 200 |
| 4 | 2020-07-28 | 150 |
| 5 | 2020-07-29 | 350 |
| 6 | 2020-07-30 | 300 |
| 7 | 2020-07-31 | 250 |
+------+------------+--------+
I ovanstående fråga väljer vi endast de poster vars månad är en mindre än månaden för aktuellt datum. Vi får månadsnummer för datum med MONTH()-funktionen. Vi får aktuellt datum med hjälp av NOW()-funktionen.
Enligt våra uppgifter, eftersom den aktuella månaden är augusti, får vi uppgifterna för föregående månad, det vill säga juli.
Förhoppningsvis kan du nu enkelt få senaste månadsdata i MySQL.
Bonus Läs:Hur man lägger till NOT NULL-begränsning i MySQL
På samma sätt, om du vill få poster för den senaste månaden, det vill säga de senaste 30 dagarna, så är här SQL-frågan för det.
select * from orders where order_date>now() - interval 1 month;
I ovanstående fråga väljer vi rader efter det senaste 1 månadsintervallet. Vi använder INTERVAL-satsen och NOW()-funktionen för att få datumet 1 månad i det förflutna, från nuvarande datum.
Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!