Como almacenas las fechas? mysql tiene opcion para campos tipo DATE.
Si el campo no es tipo DATE, 21
092009 es mayor que 21
012010 y por eso aparece en los resultados de tu consulta, en todo caso, en lugar de almacenar ddmmaaaa deberias usar aaaammdd o, mucho mejor, el timestamp correspondiente a cada fecha (numerico, 10 digitos) que obtienes con
strtotime().