2011-08-14 8 views
0

J'ai une application qui permettait d'insérer un champ datetime. Il y avait cependant un problème que cela insérerait avec les secondes et ce n'était pas censé le faire!Requête MySQL pour normaliser le champ datetime

I.e. 2011-08-07 15:24:06

Ils ont corrigé cela et inserts comprennent maintenant seulement jusqu'à la minute pour l'exemple ci-dessus ressemblerait

2011-08-07 15:24:00

Il y a 20 millions de lignes "incorrectes" pour le moment. Quelle est la requête la plus efficace pour réparer les anciennes?

Répondre

2
UPDATE 
    table 
SET 
    timefield = DATE_FORMAT(timefield,'%Y-%m-%d %H:%i:00') 
WHERE 
    SECOND(timefield) <> 0; 

Cela devra lire chaque ligne de la table et extraire la seconds partie du temps (ce qui est inévitable), mais il ne sera pas mettre à jour les lignes qui déjà sont corrects.

+0

Mais n'aurai-je pas besoin d'utiliser: 00 au lieu de:% s ?? –

+0

Lee, bien sûr, j'ai corrigé cela. –

-1

Probablement filtrer votre mise à jour basée sur les «mauvaises», puis faire une coupe droite des 3 derniers caractères.

+0

Mais une garniture enlèvera ces caractères? Je peux facilement filtrer comme je sais quand il a changé, mais avez-vous un exemple de l'instruction de mise à jour? –

+0

La réponse d'Emil sera meilleure pour vous. – diagonalbatman

Questions connexes