francoisch Posté 4 Novembre 2008 Posté 4 Novembre 2008 Bonjour Dans une table MySql, jai une colonne nommée date mal foutue (déclarée à lorigine en format Varchar) de ce type : 04/11/2008 Jai besoin de faire des tris sur la date qui aient un sens, ce qui nest pas le cas ici, du moins avec un Order by simple. Jessaie donc dalimenter une nouvelle colonne nommée date2, déclarée en format Date, avec le contenu reformaté de date avec : UPDATE compteur SET date2 = CAST(date AS DATETIME) Le code sexécute mais les valeurs dans date2 sont toujours à : 0000-00-00 Merci par avance de vos suggestions pour alimenter date2 avec un format de date depuis le contenu de date. Ou bien faire des tris sur date telle quelle est avec un ordre MySql un peu rusé ? Francois
Patrick Posté 4 Novembre 2008 Posté 4 Novembre 2008 Il ne manquerai pas une clause where à ton code ? A moins que tu n'aies qu'un seul enregistrement ? ++ Patrick
francoisch Posté 4 Novembre 2008 Auteur Posté 4 Novembre 2008 bonjour J'ai un peu plus de 900 enregistrements mais je veux tous les traiter. Qu'elle clause Where devrais je ajouter? Francois
Patrick Posté 5 Novembre 2008 Posté 5 Novembre 2008 Tout dépend de ta version de MySQL. Si tu es en <= 4.0.x, CAST() ne fait que convertir le type du champ sans tenir compte de la valeur. Pour les versions >= 4.1.x Cela dépend de ton script. Par exemple $query = "SELECT * FROM compteur";$result = mysql_query($query, $cnx) or die(mysql_error());$row_result = mysql_fetch_assoc($query);do {$querymaj = "UPDATE compteur SET date2 = CAST('".$row_result['date']."' AS DATE) WHERE date = '".$row_result['date']."'";$resultmaj = mysql_query($querymaj, $cnx) or die(mysql_error());} while ($row_result = mysql_fetch_assoc($query)); Comme je ne suis pas certains que CAST() permette de faire ce que tu veux, dans le pire des cas, dans la boucle Do/While, tu fais un explode() de $row_result['date'] et tu le modifies pour obtenir le format voulu que tu remplaces dans la requête $querymaj et là pas de souci cela marchera quelque soit ta version de MySQL. ++ Patrick
francoisch Posté 5 Novembre 2008 Auteur Posté 5 Novembre 2008 bonjour Patrick et merci de ta réponse. Ma version MySQL: 5.0.67. Ton code: j'ai fait: - un Copier / Coller direct - comme il sortait deux erreurs, j'ai remplacé $query par $result dans les deux mysql_fetch_assoc (OK?) Résultat: la colonne date2 est tjs à 00. Il me manque qqechose? Francois
Patrick Posté 5 Novembre 2008 Posté 5 Novembre 2008 Désolé je ne l'ai pas tester avant de le mettre en ligne,méa culpa. Je te le refais demain à la pause déjeuner et je le testerai pour être certain qu'il fonctionne. (à moins que je sois devancé par quelqu'un d'autre) Cela doit venir de CAST() qui ne converti pas automatiquement. Pas de souci je te prépare la version brut de pomme et ça marchera. Patiente jusqu'a demain ... (je quitte le bureau là) ++ Patrick
Patrick Posté 7 Novembre 2008 Posté 7 Novembre 2008 oups je lme suis oublié ... Désolé, je viens d'arriver au bureau, je te prépare ça entre 2 emails. Tiens voilà, essaie ça <?php$cnx = mysql_pconnect("hostname", "username", "password") or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db("database", $cnx);$query = "SELECT * FROM compteur";$result = mysql_query($query, $cnx) or die(mysql_error());$row_result = mysql_fetch_assoc($result);do {$old = explode("/",$row_result['date']);$new = $old[2]."-".$old[1]."-".$old[0];$querymaj = "UPDATE compteur SET date2 = '".$new."' WHERE date = '".$row_result['date']."'";$resultmaj = mysql_query($querymaj, $cnx) or die(mysql_error());} while ($row_result = mysql_fetch_assoc($result));?> ++ Patrick
francoisch Posté 7 Novembre 2008 Auteur Posté 7 Novembre 2008 Merci de ta réponse. J'essaie dès que possible mais aujourd'hui sera difficile. Francois
francoisch Posté 10 Novembre 2008 Auteur Posté 10 Novembre 2008 Merci Patrick de ta réponse. Impeccable, ça fonctionne de manière splendide; je n'ai pas eu à y faire une seule modification, ce dont j'aurai peut être bien été incapable. Je peux maintenant trier mes centaines d'enregistrements sur la date. Je vais maintenant pouvoir modifier mes programmes pour qu'ils produisent dans la nouvelle colonne des dates au bon format. Merci encore de ton aide. Francois
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant