#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)
это также может быть полезно.