我要么是愚蠢的,要么是错的。
我有两个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?!)
我错过了什么吗?!
答案 0 :(得分:12)
可能是因为在线服务器上的时钟错误了?
尝试运行:
SELECT @@system_time_zone, NOW(), UTC_TIMESTAMP()
并查看它返回的区域是否与差异相符。