これは役に立つかもしれないと思いました:
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';
(「ヨーロッパ/ヘルシンキ」などの名前付きタイムゾーンを使用するということは、タイムゾーンテーブルに適切にデータを入力する必要があることを意味します。)
+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に設定する必要がありますか?