&tag(MySQL/タイムゾーン);
*目次 [#dd18798b]
#contents
*参考情報 [#b13a3102]
-[[MySQL :: MySQL 5.1 リファレンスマニュアル :: 4.10.8 MySQL サーバのタイム ゾーン サポート:http://dev.mysql.com/doc/refman/5.1/ja/time-zone-support.html]]
-[[実践 ハイパフォーマンスMySQL(第2版)を斜め読みして前半の重要なポイントだけをまとめてみた - Yuta.Kikuchiの日記:http://d.hatena.ne.jp/yutakikuchi/20120122/1327214127]]
-[[Rails3系のtimezoneの扱いに関するメモ - Qiita [キータ]:http://qiita.com/semind/items/68341489a9c5149b815d]]
-[[Rails3 + ActiveRecord で正しくtimezoneを設定する - Future Journal 〜未来志向で行こう〜:http://twodollarz.hatenablog.jp/entry/20120703]]
-[[Rails と時刻 - @kyanny's blog:http://blog.kyanny.me/entry/2012/08/16/042204]]
-[[Rails3/タイムゾーン]]
*タイムゾーンの確認方法 [#g1f187ef]
-以下のようにして表示できる。SYSTEMはSYSTEMのタイムゾーン
#pre{{
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+
}}
-SYSTEMタイムゾーンが知りたい場合(タイムゾーンを変更した場合、一回クライアントを立ち上げ直さないとリフレッシュされない)。
#pre{{
mysql > show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | JST    |
| time_zone        | SYSTEM |
+------------------+--------+
}}
*タイムゾーンの変更方法 [#p4542dd5]
-[[MySQL :: MySQL 5.1 リファレンスマニュアル :: 4.10.8 MySQL サーバのタイム ゾーン サポート:http://dev.mysql.com/doc/refman/5.1/ja/time-zone-support.html]]
-グローバル設定を変更するには管理者権限が必要
 mysql> SET GLOBAL time_zone = timezone;
 mysql> SET GLOBAL time_zone = SYSTEM
 mysql> SET GLOBAL time_zone = '+0:00'
-接続毎の設定を変更する場合
 mysql> SET time_zone = timezone;


*タイムゾーンはどこに影響するのか [#scce25b3]
-INSERTする時刻文字列のタイムゾーンは影響なし。つまり'YYYY-MM-DD HH:MM:SS'形式しか許されない。タイムゾーン部分があったとしても無視される(?)
-テーブルの列がdatetime型である場合。datetime型は文字列として保存されるのでタイムゾーンの影響なし。datatime型の列にJSTで「2013-08-30 12:23:34」を保存し、タイムゾーンを+0:00に変更して表示しても「2013-08-30 12:23:34」のまま表示される。
-テーブルの列がtimestamp型である場合。timestamp型の列はUTCに変換されて格納されるのでタイムゾーンの影響あり。JSTで「2013-8-30 12:23:34」を保存すると、UTCの「2013-08-30 03:23:34」が保存される。タイムゾーンを+0:00に変更して、この値を表示すると「2013-08-30 03:23:34」が表示される。
-NOW()などの表示にもタイムゾーンを考慮した時刻が表示される。タイムゾーンが+0:00の場合、日本時間 2013-08-30 16:20:49にNOW()を実行すると、 「2013-08-30 07:20:49」と表示される。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS