J'ai pensé que cela pourrait être utile:
Il existe trois endroits où le fuseau horaire peut être défini dans MySQL:
Dans le fichier "my.cnf" dans la section [mysqld]
default-time-zone='+00:00'
@@ variable globale.time_zone
Pour voir quelle valeur ils sont définis:
SELECT @@global.time_zone;
Pour lui attribuer une valeur, utilisez l'une ou l'autre:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(L'utilisation de fuseaux horaires nommés comme «Europe / Helsinki» signifie que vous devez disposer d'un tableau de fuseaux horaires correctement rempli.)
Gardez à l'esprit qu'il +02:00
s'agit d'un décalage. Europe/Berlin
est un fuseau horaire (qui a deux décalages) et CEST
est une heure d'horloge qui correspond à un décalage spécifique.
@@ session.time_zone variable
SELECT @@session.time_zone;
Pour le définir, utilisez l'un ou l'autre:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
Les deux peuvent retourner SYSTEM, ce qui signifie qu'ils utilisent le fuseau horaire défini dans my.cnf.
Pour que les noms de fuseau horaire fonctionnent, vous devez configurer vos tableaux d'informations de fuseau horaire à remplir: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Je mentionne également comment remplir ces tableaux dans cette réponse .
Pour obtenir le décalage de fuseau horaire actuel sous la forme TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Il renverra 02:00:00 si votre fuseau horaire est +2: 00.
Pour obtenir l'horodatage UNIX actuel:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
Pour obtenir la colonne d'horodatage en tant qu'horodatage UNIX
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
Pour obtenir une colonne datetime UTC en tant qu'horodatage UNIX
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Remarque: modification du fuseau horaire ne modifiera pas l'heure ou l'horodatage stockés , mais il affichera une heure de date différente pour les colonnes d'horodatage existantes car elles sont stockées en interne en tant qu'horodatages UTC et affichées en externe dans le fuseau horaire MySQL actuel.
J'ai fait une feuille de triche ici: MySQL devrait - il avoir son fuseau horaire réglé sur UTC?
ntp
- et voyez ce qui vous convient!"