Ho pensato che potesse essere utile:
Ci sono tre punti in cui il fuso orario potrebbe essere impostato in MySQL:
Nel file "my.cnf" nella sezione [mysqld]
default-time-zone='+00:00'
@@global.time_zone variabile
Per vedere a quale valore sono impostati:
SELECT @@global.time_zone;
Per impostare un valore usa uno dei due:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(L'uso di fusi orari con nome come "Europa/Helsinki" significa che devi avere una tabella di fusi orari correttamente popolata.)
Tieni presente che +02:00
è un offset. Europe/Berlin
è un fuso orario (che ha due offset) e CEST
è un orario che corrisponde a un offset specifico.
@@session.time_zone variabile
SELECT @@session.time_zone;
Per impostarlo usa uno dei due:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
Entrambi potrebbero restituire SYSTEM, il che significa che utilizzano il fuso orario impostato in my.cnf.
Affinché i nomi dei fusi orari funzionino, è necessario configurare le tabelle delle informazioni sul fuso orario che devono essere compilate:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Cito anche come popolare quelle tabelle in questa risposta .
Per ottenere l'offset del fuso orario corrente come TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Restituirà 02:00:00 se il tuo fuso orario è +2:00.
Per ottenere il timestamp UNIX corrente:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
Per ottenere la colonna timestamp come timestamp UNIX
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
Per ottenere una colonna data/ora UTC come timestamp UNIX
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Nota:la modifica del fuso orario non modificherà la data e l'ora o il timestamp memorizzati , ma mostrerà una data e ora diversa per le colonne timestamp esistenti poiché sono archiviate internamente come timestamp UTC e visualizzate esternamente nel fuso orario MySQL corrente.
Ho creato un cheatsheet qui: MySQL dovrebbe avere il fuso orario impostato su UTC?