MySQL查询当前的GMT时间

Rus*_* C. 25 mysql datetime gmt convert-tz

这听起来很简单但我无法弄清楚如何使用简单的SELECT语句来返回GMT中的当前时间.

我一直在尝试使用CONVERT_TZ()根据服务器时区和GMT时区将NOW()转换为GMT,但由于某种原因,当我放入文本时区时它返回NULL.我得到结果的唯一方法是实际放入偏移量,这对于应该是一个非常简单的操作来说太复杂了.这就是我的意思:

mysql> SELECT CONVERT_TZ(NOW(),@@global.system_time_zone,'GMT');
NULL

mysql> SELECT CONVERT_TZ(NOW(),'PST','GMT');
NULL

mysql> SELECT CONVERT_TZ(NOW(),'-08:00','+00:00');
2010-02-13 18:28:22
Run Code Online (Sandbox Code Playgroud)

我只需要一个简单的查询来返回GMT中的当前时间.在此先感谢您的帮助!

Ruf*_*nus 36

只使用UTC(不受夏令时影响)

SELECT UTC_TIMESTAMP();
Run Code Online (Sandbox Code Playgroud)

旧内容供参考:

这应该工作,但有

SELECT CONVERT_TZ(NOW(),'PST','GMT');
Run Code Online (Sandbox Code Playgroud)

我的结果也是NULL.有趣的是,mysql文档中的示例也返回null

SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
Run Code Online (Sandbox Code Playgroud)

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_convert-tz 似乎你在mysql中发现了一个错误.(感谢+ Stephen Pritchard)

你可以尝试:

SET @OLD_TIME_ZONE=@@TIME_ZONE;
SET TIME_ZONE='+00:00';
SELECT NOW();
SET TIME_ZONE=@OLD_TIME_ZONE;
Run Code Online (Sandbox Code Playgroud)

确定不是你想要的(它的4个查询,但只有一个选择:-)

  • @Rufinus - 好,我不是疯了.MySQL如何在如此重要的功能中出现错误?UTC_TIMESTAMP()正是我想要的.谢谢! (3认同)

小智 13

CONVERT_TZ()中没​​有错误

要使用CONVERT_TZ(),您需要安装时区表,否则MySql返回NULL.

从CLI以root身份运行以下命令

#mysql_tzinfo_to_sql/usr/share/zoneinfo | mysql -u root mysql

请参阅http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

谢谢

http://www.ArcanaVision.com(SJP 2011-08-18)

  • 刚刚发现,填充区域后,"PST"时区仍然不存在.我在维基百科中读到,由于夏令时,看起来PST不足以定义时区.有些城市使用DST,有些则没有.请参阅:http://en.wikipedia.org/wiki/Pacific_Time_Zone#Daylight_time.我使用Pacific/Los_Angeles而不是PST(考虑使用DST). (3认同)

Tim*_*nen 12

注意:GMT可能有DST UTC没有DST

SELECT UTC_TIMESTAMP();
Run Code Online (Sandbox Code Playgroud)

我在这里做了一个备忘单:MySQL的时区应该设置为UTC吗?


Fra*_*erZ 5

获取当前UTC日期时间的确定方式是:

SELECT CONVERT_TZ(NOW(), @@session.time_zone, '+0:00')
Run Code Online (Sandbox Code Playgroud)