Самый простой способ обойти это - создать новые столбцы created_at
и updated_at
DATETIME
, назначить им проанализированные значения даты, а затем отбросить старые столбцы и переименовать новые. Например:
ALTER TABLE users ADD new_created_at DATETIME
UPDATE users SET new_created_at = STR_TO_DATE(created_at, '%d.%m.%Y %l:%i')
ALTER TABLE users DROP created_at, CHANGE new_created_at created_at DATETIME
Демонстрация на dbfiddle
Как указывает @BillKarwin, вы должны проверить, что new_created_at
содержит действительные значения до удаление столбца created_at
на случай, если некоторые даты не соответствуют формату. Вы можете проверить эти случаи, используя
SELECT *
FROM users
WHERE new_created_at IS NULL
И, как указывает @Barmar, лучше сначала попробовать это в резервной копии таблицы.