Форматът ви по същество не е подходящ за сортиране, с който да започнете - вие сравнявате низове , а низът „28-10-2012“ е по-голямо от "02-11-2012".
Вместо това трябва да сравнявате датите като дати , а след това ги конвертирате само във вашия целеви формат за изход.
Опитайте това:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
(Въведените данни винаги трябва да са във формата на стойност година-месец, съгласно документацията .)
Имайте предвид, че ако starttime
е DATETIME
поле, може да помислите за промяна на заявката, за да избегнете многократно преобразуване. (Оптимизаторът може да е достатъчно умен, за да го избегне, но си струва да проверите.)
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
(Обърнете внимание, че е необичайно да форматирате дата като d-m-Y
за начало - би било по-добре да използвате y-M-d
като цяло е стандарт ISO-8601 и т.н. Въпреки това горният код прави това, което поискахте във въпроса.)