Aller au contenu

Probleme avec ORDER by DATE


roadruner

Sujets conseillés

Bonsoir,

J'utilise Mysql 5.0.77-community-nt

Voici ma Query :

SELECT lp_cont.numclient, lp_cont.numcont, lp_fic.namesociete, lp_fic.lastname, lp_fic.firstname, DATE_FORMAT(lp_cont.dateecheance,'%d-%m-%Y') as dateecheance FROM lp_cont,lp_fic WHERE (lp_cont.numclient  = lp_fic.numclient) AND (`dateecheance` < ADDDATE(NOW(),INTERVAL 30 DAY)) ORDER BY `dateecheance` ASC

Le soucis est que dans ma page PHP, le résultat est trié par les %d puis par les %m puis les %Y et non sur la date entière.

Ce qui donne par exemple :

01-01-2009

01-02-2009

01-03-2009

01-04-2009

01-04-2009

01-04-2009

01-04-2009

03-02-2009

03-02-2009

04-04-2009

Comment faire pour que le tri soit sur la date entière ?

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Vu les symptomes, tu tris sur la version "VARCHAR" de ta date... si "lp_cont.dateecheance" est vraiment un champ de type DATE, fais le order by dessus.

Lien vers le commentaire
Partager sur d’autres sites

En fait, le probleme venait du reformatage du champs lp_cont.dateecheance dans mon SELECT.

En changeant mon ORDER BY par

ORDER BY DATE_FORMAT(lp_cont.dateecheance,'%Y-%m-%d') ASC

ça marche.

en fait, dans ce cas, SQL tri sur l'année, puis le mois et enfin le jour.

Lien vers le commentaire
Partager sur d’autres sites

Oui mais lp_cont.dateecheance est déjà au format date non ? Donc là tu fais une double conversion du champ, juste pour un tri (ce qui empêche d'ailleurs toute utilisation d'un index).

Donc, si le champ d'origine est bien formaté il suffit de remplacer ton :

ORDER BY `dateecheance`

par :

order by lp_cont.dateecheance

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...