Tri sur une date au format dd/mm/yy

hellwood -  
 hellwood -
Bonjour,

voila j'ai un petit probleme pour réaliser un tri sur une date.
J'explique, je doit mettre a jour régulierement une table via un fichier csv en php, pas de souci.
Ce fichier contient un champs avec une date au format dd/mm/yy.
Résultat des courses je suis obligé de stocker cette date dans un champs de type texte ou autre mais pas de type date etant donné que mysql travail en yy/mm/dd.

Quelqun aurait t'il une idée pour faire un tri sur ce champs sans devoir modifier le fichier csv ??
A voir également:

13 réponses

Borracho
 
Mmmmh je suppose qu'un tri par type va etre de mise... ce que je vais dire va etre grossier, mais c'est l'idée qu'il faut noter ^^

date = dd/mm/yy

tu peux faire un $cut_date = explode("/", $date); ce qui va te donner 3 tableaux $cut_date[]
ensuite tu peux imaginer un tri des $cut_date[].
Ou bien si tu ne dois pas remettre a jour ta base de donnée

UPDATE ma_table SET date = '$cut_date[2].$cut_date[1].$cut_date[0]' un truc dans ce style ?
2
P@t@ch0n Messages postés 603 Statut Membre 85
 
Si tes valeurs sont déjà dans ta table, il te suffit simplement d'ajouter une colonne de type DATE.
ALTER laTable ADD COLUMN dateTemp DATE DEFAULT NULL;
Ensuite un UPDATE en prenant les valeurs de ta colonne date actuelle.
UPDATE laTable SET dateTemp = CONCAT(SUBSTRING(colonneDate, 7, 2), '-', SUBSTRING(colonneDate, 4, 2), '-', SUBSTRING(colonneDate, 1, 2));
Tu vérifies que tout s'est bien passé.
SELECT dateTemp, colonneDate FROM laTable;
Si ok, tu supprimes l'ancienne colonne de ta date.
ALTER laTable DROP colonneDate;
Et ensuite tu renommes dateTemp du nom de ta colonne et supprimes le DEFAULT NULL.
ALTER TABLE laTable CHANGE dateTemp colonneDate DATE NOT NULL;
Et après un simple ORDER BY pour trier selon cette colonne ;)
1
hellwood
 
ok merci patachon, j'avais penser a travailler dans la table en créant une nouvelle collone, j'espere que modifier la structure de la table ne posera pas de probleme lors des mise à jour.
encore merci je vais creuser ton idée.
0
P@t@ch0n Messages postés 603 Statut Membre 85 > hellwood
 
Ah si, tu seras dorénavant contraint de formater correctement tes dates avant insertions.
0
ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
tu veux faire le tri à quel moment ?

tu peux le faire dans ta requête directement
0
P@t@ch0n Messages postés 603 Statut Membre 85
 
On peut savoir pourquoi tu ne stockes pas tes dates dans un type destiné à cet usage ?

Une date, ça se formate.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hellwood
 
pour ThEBiShOp,

un tri directement dans la requete me pose justement probleme sur un champ qui a le format dd/mm/yy

car dans le cas d'un tri descendant par exemple : 12/04/2001 viendrait avant 12/01/2004

probleme qui ne se poserait pas si la date était dans le format yy/mm/dd
0
hellwood
 
patachon, comment pourais-je formater une date qui est deja dans ce format dans le fichier texte?

ces fichiers texte sont généré par un autre programme, je ne peut donc pas formater mes dates dedans via excel par exemple.

L'idée de Borracho est interressante mais c'est deja du sacré boulot ...

- extraire toutes les mauvaises dates
- exploser les dates en les inversant dans un tableau
- procéder à une mise à jour en remettant juste les bonnes dates à la place des mauvaises dans la db.
0
pyfeu Messages postés 40 Statut Membre
 
Pourquoi tu ne changes pas toi même le format de la date lorsque tu la récupère? de manière à ce qu'elle soit du même format que en sql
0
pyfeu Messages postés 40 Statut Membre
 
Sinon tu commences par comparer l'année ensuite le moi puis le jour vu que le format est tout le temps le même il te suffit de récupérer les caractères de 0à2 puis de 3 à 5 puis de 6 à 8 avec la méthodes substr
0
P@t@ch0n Messages postés 603 Statut Membre 85
 
Sauf que non, on ne met pas du café dans une boîte à sucre tout comme on ne met pas du sucre dans un pot à café.

Des types dates sont fournis, autant s'en servir non ?
0
hellwood
 
raaah j'ai l'impression de lire tellement de solutions interressante ici, pourtant je ne sais plus quoi penser.
0
pyfeu Messages postés 40 Statut Membre
 
En même temps là il met des dates dans un string :s
0
ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
il y a toujours beaucoup de solutions à un problème, il faut en essayer, si on arrive pas à savoir laquelle est la plus adaptée à notre soucis
0
hellwood
 
je n'ai malheureusement pas le temps de tester les methodes aujourd'hui mais demain je vous tiendrais au courant.
0