sql >> Databasteknik >  >> RDS >> Mysql

Jag behöver ovanliga mysql-resultat

Så här skulle jag göra:

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

%j datumformat är dagen på året, det vill säga ett nummer 001...366.

Jag testade detta på några exempeldata och det sorterar på det sätt som du beskriver:det ignorerar året och sorterar nästa datum som infaller efter det aktuella datumet först, sedan stigande, och omsluter till datum tidigare 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. Hur man lägger till primär nyckelbegränsning till identitetskolumner i alla tabeller i SQL Server Database - SQL Server / TSQL självstudie del 63

  2. C# För många anslutningar i MySQL

  3. fel:'Ogiltigt parameternummer:parametern definierades inte' när du använder en array för att INSERT i PDO

  4. kan inte ansluta till MySQL-databas med extern ip-adress