Je travaille sur une table contenant deux formats de dates stockées dans un champ Certains sont dans Je veux exécuter une requête comme celle-ci p> mais ce n'est tout simplement pas opérationnel. Un résultat que j'ai eu était qu'il ne s'agissait que de prendre les données Toute pensée? P> p> mm / dd / yy code> et les nouvelles entrées sont dans AAAA / MM / DD DD Code> Comme ils devraient être. % m code> et de la transformer en % y code> et de gâcher vraiment les données. P>
3 Réponses :
Vous voulez utiliser str_to_date code> Pour d'abord convertir la chaîne incorrecte en un objet de date réel, puis utilisez date_format code> pour le retourner dans une chaîne du format souhaité. < P> Aussi, votre où code> condition ne fonctionnera pas comme ça. Vous devriez rechercher des chaînes du mauvais format à l'aide de comme code>. P>
Vous voulez utiliser la fonction STR_TO_DATE, pas de date_format. De plus, je suppose que vous ne voulez que mettre à jour les dates mal formées, alors je suppose que vous pourriez le faire:
UPDATE your_table SET date_field = DATE(STR_TO_DATE(date_field, '%m/%d/%Y')) WHERE DATE(STR_TO_DATE(date_field, '%m/%d/%Y')) <> '0000-00-00';
Merci, cela devrait être très bien redressé. Ensuite, nous pouvons avancer pour obtenir le reste du site redressé. Il est allé de ASP à PHP et MS SQL à MySQL! C'est incroyable qu'il reste toujours debout! Ha!
pensées? Ah oui, trois en fait: p>
ne réinventez pas la roue forte>. Oui, oui, je sais qu'il est tentant de faire de zéro ce que seul un million de personnes ait inventé auparavant (aucun sarcasme prévu), mais MySQL a une bonne qualité, efficace et utilisable comme pour les données, restaurez la bonne sauvegarde connue (vous avez des sauvegardes, non?) - Dans l'affaire Général, Il n'y a pas de manière non résistante à raconter forte> non converties Y / m / D de M / D / Y déjà converti et les dates sont F *** ED à des fins pratiques. (surtout pas en 2010 - E.g. aussi, quel genre d'idée est-il de stocker uniquement 2 chiffres de la date? C'est exactement le type de penny-pincement à courte vue qui a apporté sur le temps et l'argent de l'argent qui était Y2K. (évité si vous stockiez la date, vous savez, au format de date). P> li>
ul> au format code>, utilisez cela; Seulement faire le formatage de l'entrée / de la sortie. Qui vous permet d'éviter ces types de mélanges de données (la date elle-même) et de la présentation (format de date). P> li>
08/10/09 code> peut signifier plusieurs dates valides). P> li>
Quel est le type de colonne de date_field? Si c'est la date ou l'horodatage - vous ne pouvez pas réorganiser YMD à MDY