MySQL查询当前的GMT时间

时间:2010-02-13 16:34:09

标签: 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

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

10 个答案:

答案 0 :(得分:35)

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

SELECT UTC_TIMESTAMP();

旧内容供参考:

这应该有效,但是

SELECT CONVERT_TZ(NOW(),'PST','GMT');

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

SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');

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;

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

答案 1 :(得分: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)

答案 2 :(得分:12)

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

SELECT UTC_TIMESTAMP();

我在这里制作了一张备忘单:Should MySQL have its timezone set to UTC?

答案 3 :(得分:5)

获取当前UTC日期时间的万无一失的方法是:

SELECT CONVERT_TZ(NOW(), @@session.time_zone, '+0:00')

答案 4 :(得分:0)

在看到上面的所有答案并看到它转换为PST后不可靠之后,我只是使用了这个:

  

DATE_SUB(user_last_login,INTERVAL 7小时)

答案 5 :(得分:0)

这应该有效 - 我认为你的时区错误。以芝加哥为例

SELECT CONVERT_TZ(NOW(), 'America/Chicago', 'GMT')

答案 6 :(得分:0)

当源服务器时间戳未知但需要特定tz时,请执行以下操作:

select convert_tz(utc_timestamp(),'+05:00','+00:00')

这使用CST作为示例。 utc_timestamp将保证' +00:00'结果无论你在哪里查询它。 ' +05:00'是你想要的偏移量。 这在击中多个未知服务器时效果很好,并且它确保您返回结果将全部在一个共同的tz结果集中。

答案 7 :(得分:0)

我正在寻找我的时区,即GMT + 6(亚洲/达卡时区)

MySQL服务器在美国。以下对我有用。

SELECT CONVERT_TZ(UTC_TIMESTAMP(),' +06:00',' +00:00')

答案 8 :(得分:0)

这应该有效 SELECT date_add(UTC_TIMESTAMP(),间隔330分钟);

答案 9 :(得分:-1)

CONVERT_TZ功能没有错误。由于使用时区名称/缩写,因此获得NULL。除非你安装mysql.time_zone_name表,否则Mysql不知道这个' GMT' PST'等等是什么意思。但是,如果您使用数字,它将始终有效。

mysql> SELECT CONVERT_TZ(NOW(),'-08:00','+00:00');

返回NULL

phpMyAdmin - Error

The mbstring extension is missing. Please check your PHP configuration.

返回2016-06-24 17:58:33