|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 485 ![]() |
Bonjour,
J'ai une table que je n'es pas crée et qui es déjà rempli de donnée. Dans cette table j'ai un champ qui se nomme date_com de type varchar, les date de ce champ son écrit comme ce ci 01/05/2008. Donc mon problème c'est que je dois faire un tri sur c'est date avec un ASC ou DESC mais voila mysql me trie que les 2 premier chiffre et par le reste de la date donc mon ordonnancement n'est pas bon. Et bien sur dans cette table j'ai d'autre 10 autre champ en plus de celui avec la date. Comment puis je faire pour trier normalement c'est date ? Merci a vous. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() |
Bonjour,
Utiliser des types date
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 485 ![]() |
Oui mais le probleme que le system attend des date de ce type 01/05/2008 alors que mysql me balance des date de ce type 2008-05-28 et donc mon probleme est que je ne peut changer l'ecriture des dates.
merci a toi |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() |
Il existe une fonction DATE_FORMAT(date,format) qui est faite pour ça
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 485 ![]() |
Oui mais comme je disais je ne peux pas changer mes donnée de ma bdd car sinon tous le systéme autour de ca marchera plus donc ce que je comprend c'est que cela est impossible de trier les dates tel que je les es maintenant.
Merci de ton aide. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() |
Si tu utilise la fonction DATE_FORMAT() rien ne changera pour ce qui entoure la base de données.
L'avantage c'est que tu n'aura plus de problème, le désavantage c'est qu'il faut que tu t'occupe de convertir les dates actuelle en dates MySQL
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
00
|
|
|
#7 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
A mon avis, le problème est un peu plus complexe que ça, parce que la fonction DATE_FORMAT() est faite pour formater un champ qui est déjà de type DATE... Or là, c'est du VARCHAR...
Tu as plusieurs solutions. La plus "basique" consiste à transformer les dates de ton champ en timestamp de format AAAAMMJJ pour la comparaison. Dans ce cas, ça devrait fonctionner... Pour faire ça, il va falloir utiliser la fonction SUBSTRING() pour extraire l'année, le mois puis le jour. Et concaténer tout ça... ![]() Ca doit donner quelque chose comme : Code :
... ORDER BY CONCAT(SUBSTRING(date_com, 7, 4), SUBSTRING(date_com, 4, 2), SUBSTRING(date_com, 1, 2)) ASC |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() |
Pas bête en effet.
Ma solution ne s'appliquait pas directement au contexte de son application ce qui engendrais des modification sur l'existant.
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 485 ![]() |
Merci a vous pour votre aide.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com