7
votes

Mise à jour d'un format de date dans MySQL

Je travaille sur une table contenant deux formats de dates stockées dans un champ Certains sont dans mm / dd / yy et les nouvelles entrées sont dans AAAA / MM / DD Comme ils devraient être.

Je veux exécuter une requête comme celle-ci xxx

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 % m et de la transformer en % y et de gâcher vraiment les données.

Toute pensée?


1 commentaires

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


3 Réponses :


7
votes

Vous voulez utiliser str_to_date Pour d'abord convertir la chaîne incorrecte en un objet de date réel, puis utilisez date_format pour le retourner dans une chaîne du format souhaité. < P> Aussi, votre condition ne fonctionnera pas comme ça. Vous devriez rechercher des chaînes du mauvais format à l'aide de comme . xxx


0 commentaires

17
votes

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';


1 commentaires

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!



1
votes

pensées? Ah oui, trois en fait:

  • ne réinventez pas la roue . 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 au format , 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).

  • 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 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. 08/10/09 peut signifier plusieurs dates valides).

  • 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).


0 commentaires