Изменение типа данных с int на time вызывает ошибку в существующем значении

#mysql #sql #time

#mysql #sql #время

Вопрос:

Я получил новый проект, в котором информация о часах хранилась как тип данных int

Теперь мне нужны обе информации (часы и минуты)

после некоторого исследования я обнаружил, что тип данных time подойдет для хранения информации о часах и минутах в столбце.

Когда мы меняем существующий тип данных с int (скажем, имеющий значение 8) на тип time, существующее значение изменяется на 00:00:08

Проблема После изменения типа данных часы сдвинуты на секунды в типе данных time

Может кто-нибудь подсказать мне, как правильно отобразить его из int во время?

Структура таблицы

 before
    Name    Type
    hours   int

after
    Name    Type
    hours   time
  

фактический результат

 00:00:08
  

ожидаемый результат

 08:00:00
  

Комментарии:

1. вам не нужно второе значение

Ответ №1:

Создайте временный столбец в качестве TIME типа данных и используйте этот запрос:

 UPDATE t
SET hours_temp = SEC_TO_TIME(hours * 60 * 60)
  

Когда вы будете удовлетворены результатами, удалите исходный столбец и переименуйте столбец temp.


Если вы уже перепутали данные, используйте это вместо:

 UPDATE t
SET hours_temp = SEC_TO_TIME(EXTRACT(second FROM hours) * 60 * 60)
  

Комментарии:

1. Предполагая, что тип данных столбца уже был изменен, я думаю, UPDATE t SET hours = SEC_TO_TIME(TIME_TO_SEC(hours) * 60 * 60) это также может быть полезно.