Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

comparação de data do mysql com date_format


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.)