Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Sortowanie po dacie rosnąco i malejąco
Forum PHP.pl > Forum > Przedszkole
wiliams
Potrzebuję posortować wydarzenia z tabeli events tak aby, jako pierwsze pojawiły się nadchodzące wydarzenia w kolejności od najbliższego do najdalszego w czasie, a następnie przeszłe wydarzenia w kolejności malejącej:

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)

  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)

  1. 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
mmmmmmm
order by case when date_end>now() then 0 else 1 end asc , abs(datediff(now(), date_end))
wiliams
Dziękuje pięknie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.