Bonjour,
dans le cas d'un programme, je dois faire un trie par date, mais la date n'a pas le type date mais le type char de ce type:
15/02/2005 14:53:40
donc j'aimerai savoir comment on trie sur la date, comment on la convertit en date?
merci
Bonjour,
dans le cas d'un programme, je dois faire un trie par date, mais la date n'a pas le type date mais le type char de ce type:
15/02/2005 14:53:40
donc j'aimerai savoir comment on trie sur la date, comment on la convertit en date?
merci
euhh j'espere pour toi que tu n'a pas ennormément de lignes dans ta table à trier
enfin je suis pas un pro DBA mais je dirai que là c'est pas faisable en SQL donc il faudra tout transformer en date avec php et faire un trie ensuite, donc si tu as beacoup de ligne çà risque de peser lourd
je te conseillerai de poser la question dans l'espace SQL du forum plutot qu'ici pour savoir si les pro SQL aurai une solution.
d'autres solutions ?
?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ORDER BY STR_TO_DATE(col_date, '%d-%m-%Y %k:%i:%s')
Et la meilleure solution si tu peux modifier la base :
- rajouter une colonne de type DATETIME
- faire un beau gros UPDATE qui convertit
- supprimer cette horrible colonne
Envoyé par Biglo
+1 memem pa besoin de rajouter une colonne juste changer le type de la colonne non?
Peut-être... il y a moyen de spécifier comment convertir les colonnes, lorsqu'on fait un ALTER ?Envoyé par boo64
Parce que la conversion ne se fera pas auto vu que ses dates sont en format européen.
javais zapé qu'il était en format européen donc le mieu je pense c de fer une nouvelle colonne un script php pouré te le fet dailleur au liue de tapé tout a la main
C'est quoi la meilleur solution:
-changer le type de colonne, si oui au format date, timestamps...
ou bien
-rajouter une colonne??
merci de donner votre avis.
en faite je voudrais faire un order by sur cette colonne (date)
je vous remercie
Si tu rajoutes une colonne, il faut bien évidemment supprimer l'ancienne, qui sera devenue redondanteEnvoyé par Alain15
Je t'ai donné une méthode pour faire un order by sur ta colonne, sans devoir la convertir. L'as-tu essayée ?Envoyé par Alain15
Si tu veux convertir tes dates actuelles dans un format plus propre qui te facilitera les opérations (tri, comparaisons, récupérer le mois, l'année, ...), voilà comment tu peux procéder :
- Tu ajoutes la nouvelle colonne avec un type correct (exemple : DATETIME) ==> ALTER TABLE t ADD COLUMN laDate DATETIME NOT NULL
- Tu remplis cette nouvelle colonne en convertissant tes anciennes valeurs ==> UPDATE t SET laDate = STR_TO_DATE(ancienne_date, '%d-%m-%Y %k:%i:%s'). Je me suis peut-être trompé dans le format avec les %d, %m, etc. A toi de regarder la documentation officielle pour choisir le format qui convient à tes données actuelles.
- Tu vérifies que la conversion s'est bien déroulée, avec un SELECT par exemple.
- Tu supprimes l'ancienne colonne ==> ALTER TABLE d DROP COLUMN ancienne_date.
En faisant une sauvegarde avant toutes ces opérations si tu n'es pas sûr de ton coup
j'ai essayé ca order by STR_TO_DATE(date, '%d-%m-%Y %H:%i:%s'). ca marche
j'ai du juste remplacer k par H
merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager