将所有日期时间字段转换为UTC

时间:2014-10-06 19:56:37

标签: mysql cakephp-2.3 utc

我已经构建了一个目前正被许多客户使用的网络应用程序。 在v1.0中,它不支持时区并将所有日期时间存储在欧洲/阿姆斯特丹。 现在在v1.2中,它以UTC格式存储所有日期时间,并根据用户选择的时区在Web应用程序中显示正确的日期。

现在我想向我的客户(正在更新并且已经有一些数据)提供一个mysql查询,以便在phpmyadmin中将所有日期时间字段更新为UTC。 我使用CakePHP,因此需要更新所有创建/修改的字段。 任何人都可以告诉我这个查询是什么样的吗?

1 个答案:

答案 0 :(得分:1)

您可以使用MySQL自身提供的时区转换功能:

-- "table" and "field" are obviously placeholders 
UPDATE table SET field = CONVERT_TZ(field, 'Europe/Amsterdam', 'UTC');

请务必先备份。

请注意CONVERT_TZ要求MySQL了解时区。您可以使用简单的shell命令import them to the database(需要root访问数据库):

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p -D mysql

这可以多次执行,因此如果您不知道时区是否已导入,则执行它并没有什么坏处。您通常可以忽略有关某些模糊时区的警告。