mysql 5.6.4以降のdatetimeデータ型は、マニュアルページDate and Time Data Type Representationの説明に従って保存されます。つまり、分数秒を含む5バイトの形式であり、タイムゾーン情報とは離されています。
テストテーブル
create table dtTest
(
id int auto_increment primary key,
dt datetime not null
);
insert dtTest (dt) values ('2016-04-27 09:00:00');
これを確認するために必要な1場合は、1が保存されたファイルのバイナリエディタにジャンプし、その日時のビッグエンディアン形式を確認できます。
'%datadir%'のような変数を表示します。フォルダとdbテーブルに
C:\ProgramData\MySQL\MySQL Server 5.6\Data\
トラバース(dtTest.ibd)
タイムゾーンのためのシステムおよびセッション変数があります: '%のsystem_time_zoneの%' のような
ショーの変数は、
Eastern Daylight Time
'%time_zone%'のような変数を表示します。
SYSTEM
私はこれらの重要性を完全に無知だということを明確にしましょう。うまくいけば、同輩は明快さを加えることができます。
SELECT @@ global.time_zone、@@ session.time_zone;
SYSTEM SYSTEM
テスト別の何かにリセット:dtTestから選択
SET SESSION time_zone = '+10:00';
*;
上記の設定変更は、データの出力には影響しません。これはまだ未加工であり、タイムゾーンとは無関係です。仕事をする上でのため
SET SESSION time_zone = 'America/Chicago';
、以下を参照してください。バックセッションを設定
SET SESSION time_zone = '+10:00';
SELECT @@global.time_zone, @@session.time_zone;
SYSTEM +10:00
:
http://dev.mysql.com/doc/refman/5.6/en/mysql-tzinfo-to-sql.html
そうでない場合は、ロードされているタイムゾーンのサポートなしで、1は次のような何かを実行する必要があります私のデフォルトに:
SET SESSION time_zone = 'SYSTEM';
SELECT COUNT(*) FROM mysql.time_zone_name;
私はまだ
SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');
タイムゾーンのサポートテーブルをロードしていないので、私のカウントが0である - これは私のためにNULLです。私のシステムにサポートテーブルがまだロードされていません。
SELECT CONVERT_TZ('2007-03-11 3:00:00','-4:00','-7:00');
2007-03-11 00:00:00 - 午前3時NYCはサンフラン
にmidniteであることを意味したがって、上記のUTC時間オフセットを読むことが少ない優しい(NULLではありませんハードコーディングされました。 )。
dtTestからのSELECT ID、CONVERT_TZ(dt、 ' - 4:00'、 ' - 7:00'); - dtは
1 2016-04-27 06:00:00
上記のSELECT文はできるが、サンフラン時間にNYC時間からそれを変換し、デシベルで午前9時値をとり、私の列の名前でした。
それは私があなたのために持っている最高です。うまくいけば、誰かが時間帯のサポートの欠落した詳細を記入することができます。
このブログの投稿には、「日付の保存方法」(https://www.informit.com/library/content.aspx?b=STY_Sql_24hours&seqNum=93) – Phiter
ネイティブタイプがネイティブフォーマットで保存されています。 –
あなたは「それは私をたくさん傷つけています」と、 – Drew