好的我在UTC时区有一个MySQL数据库,我不想改变它(它是一个AWS RDS)。我正在通过php_mysqli运行所有查询我在连接到设置时区后使用以下内容:
SET time_zone = "-05:00"
我有一个包含2个字段的表test
:
date_add
=>约会时间
date_upd
=> TIMESTAMP
MySQL NOW()
和CURRENT_TIMESTAMP
匹配且位于正确的时区。确认我的跑步:
SELECT NOW()
SELECT CURRENT_TIMESTAMP
当我运行以下内容时:
INSERT INTO `test` SET `date_add`=NOW()
然后
SELECT * FROM `test`
我将date_add
和date_upd
与正确的时区匹配
但是当我在CLI或phpMyAdmin中查看原始表时,结果会有所不同,比如在不同的时区吗?
+---------------------+---------------------+
| date_add | date_upd |
+---------------------+---------------------+
| 2013-06-07 15:57:09 | 2013-06-07 20:57:09 |
+---------------------+---------------------+
不确定这两个字段是否只是设置为不同的时区正在进行的任何帮助都将非常感谢... thx
答案 0 :(得分:0)
我的猜测是set timezone
只是设置本地环境变量,并且对实际保存的内容没有影响。它只会影响查询时的查看方式。
答案 1 :(得分:0)
这是因为datetime没有时区,而timestamp有时区。 http://dev.mysql.com/doc/refman/5.0/en/datetime.html
答案 2 :(得分:0)
在MySQL中,时间戳实际上始终是UTC,即,当您在本地时区向db插入时间戳时,它会在数据库服务器上自动转换为UTC。所以到处都是一致的。如果有不同时区的客户端,我建议您始终使用时间戳。时间戳也比datetime更有效。