SELECT UTC_TIMESTAMP()如何返回-10:00 UTC?

时间:2010-02-18 17:27:01

标签: mysql timezone timestamp utc

我要么是愚蠢的,要么是错的。

我有两个SQL Server,一个在我的本地机器上(当地时间 +2 GMT )而另一个在其他地方(NOW()似乎返回 +8 GMT )我通过phpMyAdmin访问它。我有一个包含DATETIME列的表格。我正在尝试

  

存储当前 GMT / UTC 时间,然后再次显示,仍为GMT / UTC时间。

最初我存储了DATE_SUB(NOW(), INTERVAL 8 HOUR),效果很好。但是,我读了UTC_TIMESTAMP()并更喜欢它,因为它更短,MySQL manual甚至说:

  

“当前时区设置不会影响功能显示的值   例如UTC_TIMESTAMP()或DATE,TIME或DATETIME列中的值。“

那么完美吧?除了没有。

让我们假设当前格林尼治标准时间是2010-02-18 17:18:17 (我甚至与英国某人仔细检查过)。

我的本地(+2)服务器上,我得到以下查询的以下结果:

SELECT NOW(); 2010-02-18 19:18:17

SELECT UTC_TIMESTAMP(); 2010-02-18 17:18:17

我的在线服务器上,我得到:

SELECT NOW(); 2010-02-19 01:18:17

SELECT UTC_TIMESTAMP(); 2010-02-19 07:18:17 (WHY?!)

我错过了什么吗?!

1 个答案:

答案 0 :(得分:12)

可能是因为在线服务器上的时钟错误了?

尝试运行:

SELECT  @@system_time_zone, NOW(), UTC_TIMESTAMP()

并查看它返回的区域是否与差异相符。