@knowledge

Как поменять тип поля с integer в datetime с автоматической конвертацией значений?

Подскажите, есть база данных, тип поля date_of_birth указан как integer и все даты в нем в виде числа unixtimestamp

Мне нужно поменять тип поля на datetime
Если делаешь
ALTER TABLE tablename MODIFY date_of_birth DATETIME;
выдает ошибку invalid value

Есть какое-нибудь решение по автоматической конвертации даты из integer в вид datetime в таблице?
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
mysql не умеет конвертировать значения при смене типа на несовместимый.
Поэтому необходимо добавить новое поле, обновить всю таблицу, удалить старое поле и переименовать новое в старое.

Для конвертации из числового unixtime в datetime есть подходящая функция FROM_UNIXTIME, поэтому обновление таблицы будет таким:
update tablename set new_datefield = FROM_UNIXTIME(old_int_unixtime);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Arik
Как вариант:
1. Добавить рядом новое поле
2. UPDATE'ом перенести значение в нужном формате
3. Снести старое поле
4. Переименовать новое поле к старому
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы