Twój format zasadniczo nie jest możliwy do sortowania – porównujesz ciągi , a ciąg „28-10-2012” jest większe niż „11.02.2012”.
Zamiast tego powinieneś porównywać daty jako daty , a następnie tylko przekonwertować je na docelowy format do wyjścia.
Spróbuj tego:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
(dane wejściowe muszą być zawsze w formie rok-miesiąc-wartość, zgodnie z dokumentacja .)
Zauważ, że jeśli starttime
to DATETIME
pole, warto rozważyć zmianę zapytania, aby uniknąć powtórnej konwersji. (Optymalizator może być na tyle sprytny, aby tego uniknąć, ale warto to sprawdzić.)
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
(Pamiętaj, że formatowanie daty jako d-m-Y
jest rzadkością) na początek - lepiej byłoby użyć y-M-d
ogólnie jest to standard ISO-8601 itp. Jednak powyższy kod robi to, o co prosiłeś w pytaniu.)