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

标签 mysql cakephp-2.3 utc

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

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

最佳答案

可以使用MySQL本身提供的时区转换特性:

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

一定要先做好备份。

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

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

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

关于mysql - 将所有日期时间字段转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26223884/

相关文章:

php - Cakephp 从连接表中搜索

utc - 有没有更简单的方法在 gamemaker 中获取 Utc 时间?

php - 如果不存在则插入新行并获取新的或现有的 id

php - 服务器终端中的 mySQL,需要查看输出

mysql select 区别(减)

php - 错误缓存无法在 Cakephp 版本 2.7 中写入

mysql - 权限系统最有效/最简单的方法?

php - 将计划的 XML 解析放入 SQL 数据库的最简单方法是什么?

mysql - hibernate 和 MySQL : UTC datetime

javascript - 设置/获取 VS setUTC/getUTC