sql >> Database teknologi >  >> RDS >> Mysql

Jeg har brug for usædvanlige bestilling af mysql-resultater

Sådan gør jeg det:

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

%j datoformat er dagen på året, dvs. et tal 001...366.

Jeg testede dette på nogle eksempeldata, og det sorterer på den måde, du beskriver:det ignorerer året og sorterer først den næste dato, der falder efter den aktuelle dato, derefter stigende og ombrydes til datoer tidligere på året.

+----+------------+------+ | 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. hvordan bruger jeg mysql real escape streng?

  2. Ugyldigt parameternummer, PDO ved dubletopdatering mislykkes

  3. mysql kombinerede unikke nøgler

  4. MySQL commit og transaktion