これは非常に単純に聞こえますが、単純な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で現在の時刻を返す簡単なクエリだけです。よろしくお願いします!
UTCを使用します(夏時間の影響を受けません)
SELECT UTC_TIMESTAMP();
参照用の古いコンテンツ:
これは動作するはずですが、
SELECT CONVERT_TZ(NOW(),'PST','GMT');
結果としてNULLも取得しました。面白いことに、mysql docuの例も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つだけ選択してください:-)
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)
注:GMTにはDSTが含まれる場合がありますUTCにはDSTがありません
SELECT UTC_TIMESTAMP();
ここでチートシートを作成しました: MySQLのタイムゾーンをUTCに設定する必要がありますか?
現在のUTC日時を取得する確実な方法は次のとおりです。
SELECT CONVERT_TZ(NOW(), @@session.time_zone, '+0:00')
ソースサーバーのタイムスタンプは不明であるが、特定のtzの要件がこれである場合:
select convert_tz(utc_timestamp(),'+05:00','+00:00')
これは例としてCSTを使用します。 utc_timestampは、クエリの場所に関係なく、「+ 00:00」という結果を保証します。 「+05:00」は希望するオフセットです。これは、複数の不明なサーバーにアクセスする場合に効果的であり、返される結果がすべて共通のtz結果セットに含まれることを保証します。
これは動作するはずです-タイムゾーンが間違っていると指定されていると思います。例としてシカゴを使用する
SELECT CONVERT_TZ(NOW(), 'America/Chicago', 'GMT')
GMT + 6(アジア/ダッカタイムゾーン)のタイムゾーンを検索していました
MySQLサーバーは米国にあります。以下は私のために働いた。
SELECT CONVERT_TZ(UTC_TIMESTAMP()、 '+06:00'、 '+00:00')
上記のすべての回答を見て、PSTに変換するのが信頼できないとわかった後、これを使用しました。
DATE_SUB(user_last_login、間隔7時間)