根据MySQL中的时区更改CURRENT_TIMESTAMP值

时间:2013-02-06 15:31:01

标签: mysql mysqldump

我想将我们的mysql服务器从共享主机迁移到本地服务器。

当前服务器位于MST时区,databsse中CURRENT_TIMESTAMP的值存储为-7:00 GMT。

现在我想在印度的专用服务器上移动完整的应用程序。还要将存储在-7:00 GMT中的日期值转换为+5:30 GMT。

我可以通过编写脚本来更新时间来完成更新日期的任务,但是我想知道是否有任何方法可以从数据库本身(导入时或导出自身时)执行此操作

mysql版本5.0.96-log。我没有在UTC中获得选项导出时间戳。

2 个答案:

答案 0 :(得分:3)

使用mysqldump时,设置标志:--tz-utc以强制所有时间戳都以UTC格式导出。 (http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_tz-utc)。请注意 - 默认情况下启用tz-utc 。所以你应该不做任何事情:但先测试一下:)

如果只是在服务器上使用时间戳,则无需进行任何转换,从MySQL 4.1(http://dev.mysql.com/doc/refman/4.1/en/timestamp.html上的TIMESTAMP文档开始:

  

“值仍以UTC格式存储,但从当前值转换而来   存储时区,并转换回当前时区   检索即可。只要时区设置保持不变,就可以了   得到你存储的相同值。如果存储TIMESTAMP值,则   然后更改时区并检索值,即检索到的值   与您存储的值不同。“

这很容易测试:

  1. 将时间戳保存到您的表格
  2. 更改服务器的时区
  3. 检索它:返回值应反映新的时区。
  4. 所以另一个选择是你可以在执行导出/导入时将两个服务器设置为相同的时区,而不是在完成后将它们设置回正确的时区,但请注意MySQLDump这不应该是必要的。

答案 1 :(得分:-3)

一般语法

SELECT DATE_ADD(<column_name>, INTERVAL HOUR);

将UTC更改为MST

SELECT DATE_ADD(NOW(), INTERVAL 7 HOUR);