Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tôi cần kết quả mysql đặt hàng bất thường

Đây là cách tôi sẽ làm điều đó:

SELECT *, (DATE_FORMAT(date, '%j')-DATE_FORMAT(NOW(), '%j')+365)%365 AS d 
FROM foo ORDER BY d;

%j định dạng ngày là ngày trong năm, tức là số 001 ... 366.

Tôi đã thử nghiệm điều này trên một số dữ liệu mẫu và nó sắp xếp theo cách bạn mô tả:nó bỏ qua năm và sắp xếp ngày tiếp theo rơi vào sau ngày hiện tại trước, sau đó tăng dần và bao quanh các ngày đầu năm.

+----+------------+------+
| id | date       | d    |
+----+------------+------+
|  5 | 1999-05-15 |   27 |
|  6 | 1992-06-15 |   59 |
|  7 | 1990-07-15 |   88 |
|  8 | 1988-08-15 |  120 |
|  9 | 1980-11-15 |  212 |
|  1 | 2010-01-15 |  272 |
|  2 | 2009-02-15 |  303 |
|  3 | 2004-03-15 |  332 |
|  4 | 2002-04-15 |  362 |
+----+------------+------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tăng tốc các truy vấn GROUP BY, SUM và AVG

  2. MySQL không chèn dấu gạch chéo ngược

  3. Mysql chọn trường nơi trong chuỗi csv

  4. PHP / MySQL:Truy xuất một đường dẫn duy nhất trong mô hình Danh sách gần kề

  5. truy cập mysql trong máy chủ từ hộp ảo khách