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