Изменение типа данных с int на время, приводящее к ошибке в существующем значении - PullRequest
1 голос
/ 03 апреля 2019

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

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

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

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

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

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

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

before
    Name    Type
    hours   int

after
    Name    Type
    hours   time

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

00:00:08

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

08:00:00

1 Ответ

2 голосов
/ 03 апреля 2019

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

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

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


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

UPDATE t
SET hours_temp = SEC_TO_TIME(EXTRACT(second FROM hours) * 60 * 60)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...