Đôi khi bạn có thể cần tìm nạp bản ghi tháng trước hoặc lấy các hàng từ tháng trước. Đây là cách lấy dữ liệu một tháng qua trong MySQL.
Cách nhận dữ liệu một tháng trước trong MySQL
Dưới đây là các bước để nhận dữ liệu một tháng qua trong MySQL.
Giả sử bạn có bảng đơn hàng (id, order_date, số lượng) sau trong MySQL có chứa số lượng đơn đặt hàng hàng ngày.
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 | +------+------------+--------+
Phần thưởng đọc:Cách sao chép bảng trong MySQL
Cách lấy bản ghi một tháng qua trong MySQL
Đây là truy vấn SQL để lấy bản ghi một tháng qua trong 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 | +------+------------+--------+
Trong truy vấn trên, chúng tôi chỉ chọn những bản ghi có tháng nhỏ hơn một tháng so với tháng của ngày hiện tại. Chúng tôi có được số ngày trong tháng bằng cách sử dụng hàm MONTH (). Chúng tôi có được ngày hiện tại bằng cách sử dụng hàm NOW ().
Theo dữ liệu của chúng tôi, vì tháng hiện tại là tháng 8, nên chúng tôi nhận được các bản ghi cho tháng trước, tức là tháng 7.
Hy vọng rằng bây giờ bạn có thể dễ dàng nhận được dữ liệu của một tháng qua trong MySQL.
Phần thưởng Đọc:Cách thêm ràng buộc NOT NULL trong MySQL
Tương tự, nếu bạn muốn nhận các bản ghi trong vòng một tháng qua, tức là 30 ngày qua, thì đây là truy vấn SQL cho nó.
select * from orders where order_date>now() - interval 1 month;
Trong truy vấn trên, chúng tôi chọn các hàng sau khoảng thời gian 1 tháng qua. Chúng tôi sử dụng mệnh đề INTERVAL và hàm NOW () để lấy ngày 1 tháng trước, kể từ ngày hiện tại.
Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!