私はこれが役に立つかもしれないと思った:
MySQLでタイムゾーンを設定できる場所は3つあります。
[mysqld]セクションの「my.cnf」ファイル
default-time-zone='+00:00'
@@ global.time_zone変数
それらに設定されている値を確認するには:
SELECT @@global.time_zone;
値を設定するには、次のいずれかを使用します。
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
( 'Europe / Helsinki'のような名前付きタイムゾーンを使用することは、タイムゾーンテーブルを適切に設定する必要があることを意味します。)
これ+02:00
はオフセットです。Europe/Berlin
(2つのオフセットを持つ)タイムゾーンでありCEST
、特定のオフセットに対応する時刻です。
@@ session.time_zone変数
SELECT @@session.time_zone;
設定するには、次のいずれかを使用します。
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
どちらもSYSTEMを返す場合があります。これは、my.cnfで設定されたタイムゾーンを使用することを意味します。
タイムゾーン名を機能させるには、タイムゾーン情報テーブルを設定する必要があります(http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html)。この回答では、これらのテーブルにデータを設定する方法についても触れています。
現在のタイムゾーンのオフセットを取得するには TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
タイムゾーンが+2:00の場合、02:00:00を返します。
現在のUNIXタイムスタンプを取得するには:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
タイムスタンプ列をUNIXタイムスタンプとして取得するには
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
UTC日時列をUNIXタイムスタンプとして取得するには
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
注:タイムゾーンを変更しても、保存されている日時またはタイムスタンプは変更されませんが、既存のタイムスタンプカラムは内部的にUTCタイムスタンプとして保存され、現在のMySQLタイムゾーンで外部的に表示されるため、異なる日時が表示されます。
ここでチートシートを作成しました:MySQLのタイムゾーンをUTCに設定する必要がありますか?
ntp
-あなたにぴったりのものを参照してください!」