Преобразование временного столбца MySQL из одного часового пояса в другой - PullRequest
1 голос
/ 30 декабря 2011

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

Текущий сервер - UTC, MySQL - также UTC, поэтому в этой области все хорошо. Все связанные со временем столбцы являются TIMESTAMPs. Проблема в том, что когда вводилась информация о времени, они были в формате EST / EDT. Например, введите время начала: данные: 01.01.2011, 08:00:00 (EST / EDT). Поскольку часовой пояс не был реализован в начале, база данных сохранила его как 08:00:00 UTC. Таким образом, все данные в базе данных хранятся так. Как только мы получим данные, которые требуют информации о часовом поясе, эта модель сломается.

Вопрос в том, как преобразовать все эти столбцы TIMESTAMP в правильное время UTC? Код будет изменен, чтобы иметь дело с этим на дисплее в будущем, но как насчет исторических данных?

Кажется, что самый простой способ - это сделать какой-нибудь mysqldump --tz-utc и затем импортировать данные обратно, а затем выпустить код. Тем не менее, я не могу найти хороший пример того, как сделать это правильно или есть ли другие способы сделать это наиболее эффективным способом.

Спасибо!

1 Ответ

2 голосов
/ 30 декабря 2011

Не могли бы вы использовать функцию MySQL AddTime для обновления существующих данных?

UPDATE MyTable SET MyTimeColumn = ADDTIME (MyTimeColumn, -8:00:00) WHERE <the data is bad>
...