1

次の表を想定します。

CREATE TABLE IF NOT EXISTS `test` (
  `stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

次のSQLを実行すると:

SET time_zone = '+00:00';
INSERT INTO `test` (`stamp`) VALUES (CURRENT_TIMESTAMP);

の値testは、UTCではなく私のマシンの現地時間です。

MySQLサイトによると

TIMESTAMP列の値は、保存のために現在のタイムゾーンからUTCに変換され、取得のためにUTCから現在のタイムゾーンに変換されます。

私は何が間違っているのですか?UTCの日付/タイムスタンプを使用してレコードを保存し、ユーザーのローカルタイムゾーンで取得したいと思います。

4

1 に答える 1

0

MySQL 5.5 のドキュメントによると、クライアント側から変数を変更しない限り、TIMESTAMP データ型を使用すると、デフォルトでサーバーのタイム ゾーンが使用されます。

出典: http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

接続ごとのタイム ゾーン。接続する各クライアントには、セッションの time_zone 変数によって指定される独自のタイム ゾーン設定があります。最初に、セッション変数はグローバルな time_zone 変数から値を取得しますが、クライアントは次のステートメントで独自のタイム ゾーンを変更できます。

mysql> SET time_zone = タイムゾーン;

于 2012-05-01T21:46:45.997 に答える