Seu formato fundamentalmente não é classificável para começar - você está comparando strings , e a string "28-10-2012" é maior que "02-11-2012".
Em vez disso, você deve comparar datas como datas e, em seguida, apenas convertendo-os em seu formato de destino para saída.
Tente isto:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
(A entrada deve estar sempre no formato de valor ano-mês, conforme a documentação .)
Observe que se
starttime
é um DATETIME
campo, você pode querer considerar alterar a consulta para evitar conversões repetidas. (O otimizador pode ser inteligente o suficiente para evitá-lo, mas vale a pena verificar.) select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
(Observe que é incomum formatar uma data como
d-m-Y
para começar - seria melhor usar y-M-d
em geral, sendo o padrão ISO-8601 etc. No entanto, o código acima faz o que você pediu na pergunta.)