将MySQL时间戳列从一个时区转换为另一个时区

时间:2011-12-29 23:48:04

标签: mysql mysqldump

需要一些关于如何将整个数据库TIMESTAMP列从一个时区转换为另一个时区的想法。

当前服务器是UTC,MySQL也是UTC,因此该区域的一切都很好。所有与时间相关的列都是TIMESTAMP。问题是,当输入时间信息时,它们在EST / EDT中。例如,输入开始时间:数据是1/1/2011 08:00:00 AM(EST / EDT)。由于时区未在开始时实施,因此数据库将其存储为UTC时间08:00:00。所以数据库中的所有数据都是这样存储的。一旦我们获得需要时区信息的数据,该模型就会中断。

问题是:如何将所有这些TIMESTAMP列转换为正确的UTC时间?代码将被更改为在显示方面以前进方式处理此问题但是历史数据呢?

最简单的方法似乎是执行某种类型的mysqldump --tz-utc,然后将数据导回,然后释放代码。但是,我似乎无法找到一个如何正确执行此操作的良好示例,或者是否有其他方法可以以最有效的方式执行此操作。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用MySQL AddTime函数更新现有数据吗?

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