mise à jour d'un format de date dans mysql
Je suis en train de travailler sur une table qui a deux formats de dates stockées dans un champ certains sont en mm/jj/aa et les nouvelles entrées sont au format aaaa/mm/jj comme ils devraient l'être.
Je veux exécuter une requête de ce
UPDATE table
SET date_field = DATE_FORMAT(date_field, '%Y/%m/%d')
WHERE date_field = DATE_FORMAT(date_field, '%m/%d/%y')
Mais il n'est tout simplement pas travailler. Un résultat que j'ai obtenu était qu'il était juste de faire l' %m les données et le transformer en l' %Y et vraiment gâcher les données.
Toute pensée?
- quel est le type de la colonne de date_field? si c'est la date ou timestamp -- vous ne pouvez pas réorganiser Ymd à mdy
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez utiliser STR_TO_DATE fonction, pas DATE_FORMAT. De Plus, je suppose que vous ne voulez à mettre à jour les les dates, donc je suppose que vous pourriez faire ceci :
P. S. Tables contiennent des colonnes, pas de champs. Et vous ne devriez pas utiliser un type de chaîne pour tenir vos dates, mais le type de DATE
Vous souhaitez utiliser
STR_TO_DATE
d'abord convertir la chaîne incorrecte à une date réelle de l'objet, puis utilisezDATE_FORMAT
à son tour renvoie une chaîne de format que vous voulez.Aussi, votre
WHERE
condition de ne pas travailler comme ça. Vous devriez être à la recherche pour les chaînes de format incorrect à l'aide deLIKE
.Pensées? Ah oui, trois en fait:
ne pas réinventer la roue. Oui, oui, je sais que c'est tentant de le faire à partir de zéro ce seulement un million de personnes ont inventé avant (pas de sarcasme prévu), mais que MySQL a une bonne, efficace et utilisable
DATE
format, utilisez-la; seulement la mise en forme de l'entrée/sortie. Qui vous permet d'éviter ce genre de mixups de données (la date elle-même) et la présentation (format de date).Comme pour les données, restaurer le bon de sauvegarde (vous avez des sauvegardes, non?) - dans le cas général, il n'y a pas de moyen infaillible de dire inconvertis y/m/d de déjà-converti m/d/y et les dates sont f***ed pour toutes fins pratiques. (surtout pas dans 2010 - par exemple
08/10/09
peut signifier plusieurs dates de validité).Aussi, ce genre d'idée est-elle de stocker uniquement les 2 chiffres de la date? C'est exactement le genre de myope pingrerie, qui a porté sur le temps - et d'argent-évier qui était Y2K. (éviter si vous souhaitez stocker la date, tu sais, dans un format de date).