私がバカなのか、何かがおかしいのです。
私は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?!)
私は何かを逃していますか?