いいえ、MySQLインスタンス内の単一データベースのタイムゾーンを変更することはできません。
あなたは、サーバーとクライアントのtime_zone
設定を取得することができます
SELECT @@global.time_zone, @@session.time_zone;
また、クライアントのタイムゾーン、または全体のMySQLインスタンスのタイムゾーンを変更することができます。
しかし、既存のクライアント接続に関する意味と、インスタンスにすでに格納されているDATETIMEおよびTIMESTAMP値の解釈方法を熟知していること。
、MySQLインスタンスの起動時に設定されたサーバーのTIME_ZONEを持って/etc/my.cnf
ファイル(またはどこにあなたのMySQLインスタンスの初期化パラメータが読み出され)を変更し、[mysqld]セクションの下には:
[mysqld]
default-time-zone='+00:00'
- または - MySQLサーバ上のタイムゾーンの設定を変更すると、値のSTOを変更しない: -
NOTEをmysqld_safeをする--default_time_zone='+00:00'
オプションを追加既存のDATETIME列またはTIMESTAMP列には赤色になりますが、格納された値が解釈されるコンテキストを効果的に変更するため、すべての値がシフトされたように見えます。 (08:00は8AM CSTを意味すると解釈され、サーバーのtime_zoneがCSTからGMTに変更された場合、同じ'08:00 'はGMTが午前8AMになり、実質的に2AM CSTになります)
DATETIMEカラムはタイムゾーンを持っていないながらまた、TIMESTAMPカラムは常にUTCに格納されていることを心に留めておく http://dev.mysql.com/doc/refman/5.5/en/datetime.html
各クライアントのセッションを自分のセッションのためのタイムゾーンの設定を変更することができます。
SET time_zone='-06:00';
しかしthのどれも実際にタイムゾーン変換の問題を "解決"しているだけで、変換の問題が回避されます。
タイムゾーン変換を処理するアプリケーション層には本質的に「悪い」ものはありません。時には、それが処理するのに最適な場所です。それは正しく、一貫して行われなければなりません。
(あなたが説明しているセットアップについて奇妙なのは、MySQLサーバのtime_zoneがGMTに設定されているようにDATETIME値を格納しているのにMySQLサーバのtime_zoneが何かに設定されているということです。)
わかりやすく簡潔な回答をいただきありがとうございます。でも、それは不可能です。別のサーバーだと思います! – buzzmonkey
SET timezone = ' - 06:00'; SET time_zone = ' - 06:00'にする必要があります。 –