Đối với điều này, hãy sử dụng mệnh đề ORDER BY. Ngày hiện tại như sau -
mysql> select now (); + --------------------- + | ngay () | + --------------------- + | 2019-06-09 21:08:16 | + --------------------- + 1 hàng trong bộ (0,00 giây)
Đầu tiên chúng ta hãy tạo một bảng -
mysql> create table DemoTable -> (-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> DueDate datetime ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,62 giây)
Chèn một số bản ghi vào bảng bằng lệnh chèn -
mysql> chèn vào giá trị DemoTable (DueDate) ('2019-06-12'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,24 giây) mysql> chèn vào giá trị DemoTable (DueDate) ('2019-06-01'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,37 giây) mysql> chèn vào giá trị DemoTable (DueDate) ('2019-06-05'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,20 giây) mysql> chèn vào giá trị DemoTable (DueDate) ( '2019-06-10'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,13 giây) mysql> chèn vào các giá trị DemoTable (Ngày đến hạn) ('2019-06-11'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,66 giây)Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -
mysql> select * từ DemoTable;Đầu ra
+ ---- + --------------------- + | Id | Ngày đến hạn | + ---- + --------------------- + | 1 | 2019-06-12 00:00:00 || 2 | 2019-06-01 00:00:00 || 3 | 2019-06-05 00:00:00 || 4 | 2019-06-10 00:00:00 || 5 | 2019-06-11 00:00:00 | + ---- + --------------------- + 5 hàng trong bộ (0,00 giây)Đây là truy vấn để đặt hàng theo để nhận được sự khác biệt và sắp xếp các ngày. Sự khác biệt giữa các ngày được hiển thị trong một cột riêng -
mysql> chọn Id, DueDate, DATEDIFF (DueDate, CURDATE ()) AS t từ DemoTable -> đặt hàng theo CASE WHEN t <0 THEN 1 ELSE 0 END, t;Đầu ra
+ ---- + --------------------- + ------ + | Id | Ngày đến hạn | t | + ---- + --------------------- + ------ + | 4 | 2019-06-10 00:00:00 | 1 || 5 | 2019-06-11 00:00:00 | 2 || 1 | 2019-06-12 00:00:00 | 3 || 2 | 2019-06-01 00:00:00 | -8 || 3 | 2019-06-05 00:00:00 | -4 | + ---- + --------------------- + ------ + 5 hàng trong bộ (0,00 giây)