Pensé que esto podría ser útil:
Hay tres lugares donde se puede establecer la zona horaria en MySQL:
En el archivo "my.cnf" en la sección [mysqld]
default-time-zone='+00:00'
@@ global.time_zone variable
Para ver a qué valor están configurados:
SELECT @@global.time_zone;
Para establecer un valor, use cualquiera de los dos:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(El uso de zonas horarias con nombre como 'Europa / Helsinki' significa que debe tener una tabla de zonas horarias debidamente poblada).
Tenga en cuenta que +02:00
es un desplazamiento. Europe/Berlin
es una zona horaria (que tiene dos desplazamientos) y CEST
es una hora de reloj que corresponde a un desplazamiento específico.
@@ session.time_zone variable
SELECT @@session.time_zone;
Para configurarlo, use cualquiera de los dos:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
Ambos pueden devolver SYSTEM, lo que significa que usan la zona horaria establecida en my.cnf.
Para que los nombres de zonas horarias funcionen, debe configurar las tablas de información de zonas horarias que deben rellenarse: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . También menciono cómo llenar esas tablas en esta respuesta .
Para obtener el desplazamiento de la zona horaria actual como TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Volverá a las 02:00:00 si su zona horaria es +2: 00.
Para obtener la marca de tiempo UNIX actual:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
Para obtener la columna de marca de tiempo como una marca de tiempo UNIX
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
Para obtener una columna de fecha y hora UTC como marca de tiempo UNIX
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Nota: Cambiar la zona horaria no cambiará la fecha y hora o la marca de tiempo almacenadas , pero mostrará una fecha y hora diferente para las columnas de marcas de tiempo existentes, ya que se almacenan internamente como marcas de tiempo UTC y se muestran externamente en la zona horaria MySQL actual.
Hice una hoja de trucos aquí: ¿MySQL debería tener su zona horaria establecida en UTC?
ntp
- y vea lo que es adecuado para usted!"