Mysql
 sql >> Base de données >  >> RDS >> Mysql

comparaison de date mysql avec date_format

Votre format n'est fondamentalement pas triable pour commencer - vous comparez des chaînes , et la chaîne "28-10-2012" est supérieur à "02-11-2012".

Au lieu de cela, vous devriez comparer les dates comme des dates , puis en les convertissant uniquement dans votre format cible pour la sortie.

Essayez ceci :

select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';

(L'entrée doit toujours être sous la forme année-mois-valeur, conformément à la documentation .)

Notez que si starttime est un DATETIME champ, vous voudrez peut-être envisager de modifier la requête pour éviter une conversion répétée. (L'optimiseur est peut-être assez intelligent pour l'éviter, mais cela vaut la peine de vérifier.)

select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';

(Notez qu'il est inhabituel de formater une date sous la forme d-m-Y pour commencer - il serait préférable d'utiliser y-M-d en général, étant la norme ISO-8601, etc. Cependant, le code ci-dessus fait ce que vous avez demandé dans la question.)