7

私がバカなのか、何かがおかしいのです。

私は2つのSQLサーバーを持っています。1つは私のローカルマシン(現地時間+2 GMT)にあり、もう1つは別の場所(+8 GMTNOW()を返すようです)にあり、phpMyAdminを介してアクセスします。列を持つテーブルがあります。私はしようとしていますDATETIME

現在のGMT/UTC時刻を保存し、再度 GMT/UTC 時刻のまま表示します。

もともと私が保存DATE_SUB(NOW(), INTERVAL 8 HOUR)したものはうまくいきました。しかし、私はそれについて読んUTC_TIMESTAMP()で、もっと好きになりましたMySQL manual

「現在のタイムゾーン設定は、UTC_TIMESTAMP() などの関数によって表示される値や、DATE、TIME、または DATETIME 列の値には影響しません。」

とても完璧ですよね?いいえを除いて。

現在のGMT が 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?!)

私は何かを逃していますか?

4

1 に答える 1

13

おそらくオンラインサーバーの時計がずれているからでしょうか?

これを実行してみてください:

SELECT  @@system_time_zone, NOW(), UTC_TIMESTAMP()

どのゾーンが返され、違いが一致するかを確認します。

于 2010-02-18T17:34:02.513 に答える