2011-07-25 2 views
0

mysqltutorialmySQLはTIMESTAMPフィールドのタイムゾーンをどのように決定しますか?

によるMySQLのTIMESTAMP列の値は、接続の時間 ゾーンに依存します。 MySQL TIMESTAMPカラムの値を挿入する場合、接続の時刻 ゾーンから が世界協定時刻(UTC)に変換されます。値を選択すると、サーバはUTC を接続のタイムゾーンに変換して戻し、 と同じ値になります。

この情報はどこにありますか。から、ユーザーが自分のOSを他の方法に設定した時刻、または他の方法から設定した時刻?

Javascriptがまた、タイムゾーンを行う方法がありますが、より複雑である:onlineaspect

答えて

1

。にあなたのDBAを依頼do)

+0

私の質問は明確ではありませんでした。しかし、振り返ってみると、mysqlはクライアントの時間を知ることができません。 time_zoneは、ユーザーの設定などから決定する必要があります。それは日の節約を考慮に入れますか? –

+0

@Chris Aaker:タイムゾーンをその名前で指定し、新しいタイムゾーンデータベースを持っている場合 - はい、mysqlは昼間の節約を考慮に入れます – zerkms

0

例が間違っている、私はそれをテストしました。タイムゾーンに関係なく、以前に挿入されたタイムスタンプを返します。 mysqlは指定した時刻を変更せずに挿入します。タイムゾーン調整が必要な場合は、mysqlに明示的に指示する必要があります。それ以外の場合はすべて「ローカルサーバー時間」とみなされます。あなたはTZタイムゾーンAsia/Vladivostok+11:00または名前のようなオフセットの数値(後者のためにあなたはタイムゾーンの説明をインポートする必要があるのいずれかになります

SET time_zone = TZ; 

を実行する必要が接続固有の時間を指定するには

+0

この例で何が問題になっていますか?すべてがうまく見えます。 – zerkms

+0

を除いて、 'create table'構文は次のとおりです。 INSERT INTO test_timestamp VALUES( '2008-01-01 00:00:01'); これは '2008-01-01 00:00:01'を期待通りに挿入します。 SELECT t1 FROM test_timestamp; retuns '2008-01-01 00:00:01'この例で示すように、タイムゾーン調整された値ではありません。 – iHaveacomputer

+1

これはストレージ自体でタイムゾーン調整されています。クライアントの場合、現在のセッション/グローバルtime_zone設定に従って常に表示されます。 – zerkms

関連する問題