Uw formaat is in principe niet sorteerbaar om mee te beginnen - u vergelijkt strings , en de tekenreeks "28-10-2012" is groter dan "02-11-2012".
In plaats daarvan moet je datums vergelijken als datums , en dan alleen converteren naar uw doelformaat voor uitvoer.
Probeer dit:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
(De invoer moet altijd in de vorm van een jaar-maand-waarde zijn, volgens de documentatie .)
Merk op dat als starttime
is een DATETIME
veld, kunt u overwegen de zoekopdracht te wijzigen om herhaalde conversie te voorkomen. (De optimizer is misschien slim genoeg om het te vermijden, maar het is het controleren waard.)
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
(Merk op dat het ongebruikelijk is om een datum op te maken als d-m-Y
om te beginnen - het is beter om y-M-d
. te gebruiken in het algemeen, de ISO-8601-standaard enz. De bovenstaande code doet echter wat u in de vraag vroeg.)