7

要么我很愚蠢,要么这里有什么问题。

我有两个 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?!)

我错过了什么吗?!

4

1 回答 1

13

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

尝试运行这个:

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

并查看它返回哪个区域并匹配差异。

于 2010-02-18T17:34:02.513 回答