まず、このような問題が発生しないように、この列を日時列にする必要がありますが、データをサニタイズするまでそれを行うことはできません。ここで変換を行います。最初に新しい日時フィールドを追加します
最初に m/d/Y レコードから日付を入力します。
UPDATE table SET new_datetime= STR_TO_DATE(old_datetime, '%m/%d/%y,%H:%i:%s') WHERE autoincrement <= [Last autoincrement value for m/d/y format];
次に、Y/m/d レコードから入力します。
UPDATE table SET new_datetime= STR_TO_DATE(old_datetime, '%y/%m/%d,%H:%i:%s') WHERE autoincrement > [Last autoincrement value for m/d/y format];
その後、古いフィールドを削除できます。
関数で使用されている形式が現在のものと一致していることを確認する必要があることに注意してくださいSTR_TO_DATE()
(たとえば,
、文字列にリテラルが含まれているのか、2 桁の月/日がすべて含まれているのかわかりませんでした。フォーマット パターンに応じてフォーマットを指定する方法については、このリンクを参照してくださいhttp://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format