【问题标题】:How can SELECT UTC_TIMESTAMP() return -10:00 UTC?SELECT UTC_TIMESTAMP() 如何返回 -10:00 UTC?
【发布时间】:2011-01-18 10:38:25
【问题描述】:

要么我很愚蠢,要么这里出了点问题。

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

我错过了什么吗?!

【问题讨论】:

  • 我遇到了同样的问题。

标签: mysql timezone timestamp utc


【解决方案1】:

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

尝试运行这个:

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

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

【讨论】:

  • @@system_time_zone NOW() UTC_TIMESTAMP() CST 2010-02-19 01:35:30 2010-02-19 07:35:30 所以,如果我理解这一点,服务器说它是 CST (-6),它设置为凌晨 1:35,所以 SQL 说得好,然后加 6 到 UTC……呸!多么令人沮丧。感谢您清理它,我以为我做错了什么,这让我发疯了。
  • 为什么会令人沮丧? NOW() 是时区生效后的当前时间,所以这些函数完美地完成了它们的工作,不是吗?
  • @Alex 我认为 MySQL 的逻辑/解释是完全有道理的,顺便说一句,根据时区,哪个不正确,即您的本地服务器或在线服务器?
猜你喜欢
  • 2016-07-20
  • 1970-01-01
  • 2020-09-01
  • 2016-10-07
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 2020-08-31
相关资源
最近更新 更多