2011-12-29 34 views
1

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

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

问题是:如何将所有这些TIMESTAMP列转换为正确的UTC时间?代码将会改变,以便在显示方面在前进的基础上进行处理,但历史数据又如何呢?

最简单的方法似乎是做某种mysqldump --tz-utc然后导入数据,然后释放代码。然而,我似乎无法找到一个很好的例子来说明如何正确地做到这一点,或者如果有其他方式可以以最有效的方式做到这一点。

谢谢!

回答

2

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

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

这不会采取夏季的帐户。 – 2012-12-28 12:00:07

相关问题