Mam datę w formie stringa np. 20-09-2008.
Chciałbym przy pobieraniu posortować dane wg daty.
Próbuję przez:
SELECT id, zawartosc, kraj, data FROM dostawy ORDER BY SUBSTRING(data, 6,
4), SUBSTRING(data, 3, 2), SUBSTRING(data,0, 2);
lub
SELECT id, zawartosc, kraj, DATE_FORMAT(data,'%d-%m-%Y') AS data FROM
dostawy ORDER BY data;
W obydwu przypadkach sortowanie nie działa. Jakieś pomysły?
Pozdrawiam
Przechowywać datę w polach typu DATE lub DATETIME?
.pk.
Ok. ale jestem ciekawe dlaczego DATE_FORMAT i SUBSTRING nie działają w
zapytaniu SQLowym.
Działają, jeśli poprawisz błędne indeksy w SUBSTRING() albo do DATE_FORMAT()
użyjesz daty typu DATE lub DATETIME.
.pk.
SUBSTRING nie działa, bo indeksy podaje się od 1, nie od 0
DATE_FORMAT nie działa, bo jako parametru wymaga daty, nie stringa, a
jeśli stringa, to takiego, którego da się zrzutować na datę; twoich
dat się nie da - sprawdź sobie, co zwraca cast("20-09-2008" as date)
PS. czy już kompletnie nikt nie zagląda do manuala? przecież wystarczy wkleić
nazwę funkcji na http://dev.mysql.com/doc/refman/5.0/en/index.html
Dzięki! :)
Przyzwyczajenie z PHP, gdzie substr indeksuje od 0.