我已经构建了一个目前正被许多客户使用的网络应用程序。 在v1.0中,它不支持时区并将所有日期时间存储在欧洲/阿姆斯特丹。 现在在v1.2中,它以UTC格式存储所有日期时间,并根据用户选择的时区在Web应用程序中显示正确的日期。
现在我想向我的客户(正在更新并且已经有一些数据)提供一个mysql查询,以便在phpmyadmin中将所有日期时间字段更新为UTC。 我使用CakePHP,因此需要更新所有创建/修改的字段。 任何人都可以告诉我这个查询是什么样的吗?
答案 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
这可以多次执行,因此如果您不知道时区是否已导入,则执行它并没有什么坏处。您通常可以忽略有关某些模糊时区的警告。