2016-11-01 17 views
0

FROM_UNIXTIMEを使用してMySQLに挿入するだけですが、日付が間違っています。 私のクエリはFROM_UNIXTIMEからMySQLに間違った日付が返される

INSERT INTO `phpc_occurrences` 
SET `eid` = '15', 
    `time_type` = '0', 
    `start_ts` = FROM_UNIXTIME('1479189600'), 
    `end_ts` = FROM_UNIXTIME('1479232800'); 

1479189600はTue, 15 Nov 2016 06:00:00 GMTを返す必要がありましたが、私のローカルのMySQLデータベースはTue, 15 Nov 2016 13:00:00 GMT

私のPCのタイムゾーンはUTC +7で返しますが、私はすでにUTC 0に変更し、MySQLのから日付がまだ間違っを返します値。

誰でも何が起こっているのか説明できますか?

+0

MySQLは、クライアントのタイムゾーンではなく、サーバーのタイムゾーンを使用します。 – Barmar

答えて

0

time_zone変数をGMTに更新してください。例えば、私の現在のtime_zoneはGMT + 03ですので、私は得る:

select FROM_UNIXTIME('1479189600'); 
+-----------------------------+ 
| FROM_UNIXTIME('1479189600') | 
+-----------------------------+ 
| 2016-11-15 09:00:00   | 
+-----------------------------+ 

が、UTC(GMT)にTIME_ZONEを変更する値は、他の結果を与える:

set time_zone='+00:00'; 
select FROM_UNIXTIME('1479189600'); 
+-----------------------------+ 
| FROM_UNIXTIME('1479189600') | 
+-----------------------------+ 
| 2016-11-15 06:00:00   | 
+-----------------------------+ 

多分MySQLは、それはインナーだ更新されませんでしたあなたのシステムのタイムゾーンでtime_zone変数?

また、フィールド 'start_ts'と 'end_ts'にTIMESTAMPタイプがあることに注意してください。そうであれば、テーブルに挿入するときにタイムスタンプを心配する必要はありません。mysqlクライアントはTIMESTAMP値(実際はint32)から現在のローカル時刻に変換するため、データを選択するときだけ重要です。あなたの希望するタイムゾーンであなたのdbクライアントをヒントする必要があります。

関連する問題