Nogle gange skal du muligvis hente sidste måneds rekord eller få rækker fra forrige måned. Sådan får du data om sidste måned i MySQL.
Sådan får du sidste måneds data i MySQL
Her er trinene til at få sidste måneds data i MySQL.
Lad os sige, at du har følgende tabel ordrer(id, ordre_dato, beløb) i MySQL, der indeholder daglige ordrebeløb.
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:Sådan kopierer du tabel i MySQL
Sådan får du sidste måneds rekord i MySQL
Her er SQL-forespørgslen for at få sidste måneds rekord 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 ovenstående forespørgsel vælger vi kun de poster, hvis måned er én mindre end den aktuelle dato. Vi opnår månedsantallet af datoer ved hjælp af MONTH()-funktionen. Vi får den aktuelle dato ved hjælp af NOW()-funktionen.
I henhold til vores data, da den nuværende måned er august, får vi rekorderne for den foregående måned, det vil sige juli.
Forhåbentlig kan du nu nemt få sidste måneds data i MySQL.
Bonus Læs:Sådan tilføjes NOT NULL-begrænsning i MySQL
Tilsvarende, hvis du ønsker at få optegnelser for den seneste måneds rullende, det vil sige de sidste 30 dage, så er her SQL-forespørgslen til det.
select * from orders where order_date>now() - interval 1 month;
I ovenstående forespørgsel vælger vi rækker efter sidste 1 måneds interval. Vi bruger INTERVAL-sætning og NOW()-funktionen til at få datoen 1 måned i fortiden, fra nuværende dato.
Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!