06/09/14
07/09/14
08/09/14
02/09/14 <--pierwsze zakończone wydarzenie
01/09/14
31/08/14
Próbowałem na dwa sposoby
1)
SELECT * FROM events ORDER BY CASE WHEN date_end >= CURDATE() THEN date_end END ASC, CASE WHEN date_end < CURDATE() THEN date_end END DESC
Ten dobrze sortuje, ale najpierw zwraca stare wydarzenia, a później aktualne. A ja chcę odwrotnie
2)
SELECT * FROM events ORDER BY CASE WHEN date_end > NOW() THEN 1 WHEN date_end < NOW() THEN 2 END ASC, date_end ASC
To zapytanie z kolei dobrze ustawia kolejność, są najpierw nowe wydarzenia, potem stare. Ale oba rodzaje sortują się rosnąco, a stare mają się sortować malejąco