MySQL datetime与TIMESTAMP的时区

时间:2013-06-07 21:20:28

标签: mysql timezone timestamp

好的我在UTC时区有一个MySQL数据库,我不想改变它(它是一个AWS RDS)。我正在通过php_mysqli运行所有查询我在连接到设置时区后使用以下内容:

SET time_zone = "-05:00"

我有一个包含2个字段的表testdate_add =>约会时间 date_upd => TIMESTAMP

MySQL NOW()CURRENT_TIMESTAMP匹配且位于正确的时区。确认我的跑步:

SELECT NOW()
SELECT CURRENT_TIMESTAMP

当我运行以下内容时:

INSERT INTO `test` SET `date_add`=NOW()

然后

SELECT * FROM `test`

我将date_adddate_upd与正确的时区匹配

但是当我在CLI或phpMyAdmin中查看原始表时,结果会有所不同,比如在不同的时区吗?

+---------------------+---------------------+
| date_add            | date_upd            |
+---------------------+---------------------+
| 2013-06-07 15:57:09 | 2013-06-07 20:57:09 |
+---------------------+---------------------+

不确定这两个字段是否只是设置为不同的时区正在进行的任何帮助都将非常感谢... thx

3 个答案:

答案 0 :(得分:0)

我的猜测是set timezone只是设置本地环境变量,并且对实际保存的内容没有影响。它只会影响查询时的查看方式。

在phpmyadmin中你不会先做相同的设置,所以你会看到默认的时区。

答案 1 :(得分:0)

这是因为datetime没有时区,而timestamp有时区。 http://dev.mysql.com/doc/refman/5.0/en/datetime.html

答案 2 :(得分:0)

在MySQL中,时间戳实际上始终是UTC,即,当您在本地时区向db插入时间戳时,它会在数据库服务器上自动转换为UTC。所以到处都是一致的。如果有不同时区的客户端,我建议您始终使用时间戳。时间戳也比datetime更有效。