31

This sounds simple enough but I haven't been able to figure out how to use a simple SELECT statement to return the current time in GMT.

I have been trying to use CONVERT_TZ() to convert NOW() to GMT based on the server time zone and the GMT time zone but for some reason it returns NULL when I put in the text time zones. The only way I get a result is to actually put in the offsets which is getting way too complicated for what should be a really simple operation. Here is what I mean:

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

All I need is a simple query to return the current time in GMT. Thanks in advance for your help!

4

9 に答える 9

39

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;

ok はまさにあなたが望んでいたものではありません (その 4 つのクエリですが、選択は 1 つだけです:-)

于 2010-02-13T16:58:02.813 に答える
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)

于 2011-08-18T16:31:27.517 に答える
12

注: GMT には DST がある場合があります UTC には DST がありません

SELECT UTC_TIMESTAMP();

ここでチートシートを作成しました: MySQL のタイムゾーンを UTC に設定する必要がありますか?

于 2013-10-01T09:12:04.237 に答える
0

上記のすべての回答を確認し、PSTへの変換が信頼できないことを確認した後、私はこれを使用しました。

DATE_SUB(user_last_login、INTERVAL 7時間)

于 2012-03-16T23:33:57.017 に答える
0

これはうまくいくはずです-タイムゾーンが間違って指定されていると思います。例としてシカゴを使用する

SELECT CONVERT_TZ(NOW(), 'America/Chicago', 'GMT')
于 2015-10-13T22:50:49.923 に答える
-1

CONVERT_TZ 関数にバグはありません。タイムゾーンの名前/略語を使用しているため、NULL が返されます。mysql.time_zone_name テーブルをインストールしない限り、Mysql はこの「GMT」、「PST」などの意味を認識しません。ただし、数字を使用すると、常に機能します。

mysql> SELECT CONVERT_TZ(NOW(), 'America/Chicago', 'GMT');

NULL を返します

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

2016-06-24 17:58:33 を返します

于 2016-06-24T14:13:04.527 に答える