Prova a verificare le tue date con occhio matematico.....

30-06-2004 e 31-05-2004

ora togli il separatore -. Avrai:

30062004
31052004

Qual'e' il valore minore? Ora fai come usa il database MySQL:

2004-06-30 e 2004-05-31

togli il separatore - e questa volta avrai:

20040630
20040531

Ora vedrai correttamente minore la data del 31-05-2004.

Questo per dire che nella valutazione delle date l'anno e' il valore piu' significativo, poi il mese e poi i giorni.... e non viceversa.

Se invece utilizzi il timestamp unix la data sara' rappresentata in numero dei secondi a decorrere dal 01-01-1970, e quindi sara' un valore assoluto.