420 votes

Comment définir le fuseau horaire de mysql ?

sur un seul serveur, quand je lance :

sur un autre serveur :

638voto

Timo Huovinen Points 8283

J'ai pensé que cela pourrait être utile

Il y a 3 endroits où le fuseau horaire peut être définie dans MySQL:

dans le fichier "my.cnf" dans la section [mysqld]

default_time_zone='+00:00'

@@global.time_zone variable

Pour voir la valeur qu'elles sont définies à

SELECT @@global.time_zone;

Pour définir une valeur pour utiliser un:

SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone='+00:00';

@@session.time_zone variable

SELECT @@session.time_zone;

Pour la définir utiliser soit:

SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";

les deux peut-retour, ce qui signifie qu'ils utilisent le fuseau horaire défini dans mon.cnf. Pour les noms de fuseau horaire pour travailler, vous devez configurer votre fuseau horaire tableaux de renseignements doivent être remplis: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

Pour obtenir le fuseau horaire actuel

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

Il sera de retour 02:00:00 si votre fuseau horaire est de +2:00.

Pour obtenir le timestamp UNIX actuel:

SELECT UNIX_TIMESTAMP(NOW())

Pour obtenir la colonne timestamp UNIX timestamp

SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`

Pour obtenir un UTC colonne datetime comme un timestamp UNIX

SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`

Remarque: la Modification du fuseau horaire va pas changer le stockée datetime ou timestamp, mais il faudra montrer sélectionner un autre type datetime de colonnes timestamp

J'ai fait une triche ici: Doit MySQL avoir son fuseau horaire défini à l'UTC?

69voto

jane Points 91

Quand vous pouvez configurer le fuseau horaire serveur mysql ou php... N’oubliez pas :

  1. Changer de fuseau horaire système, exemple : ubuntu...``
  2. Redémarrez le serveur ou vous pouvez redémarrer apache2 et mysql ( `` )

65voto

James Skidmore Points 13628

Pour le définir pour la session en cours, procédez comme :

56voto

Rico Chan Points 162

Il suffit de lancer cela dans votre serveur mysql

quel +8:00 sera votre fuseau horaire

12voto

Alex Martelli Points 330805

Vous pouvez spécifier le serveur du fuseau horaire par défaut lorsque vous démarrez, voir http://dev.mysql.com/doc/refman/5.1/en/server-options.html et plus précisément l' --default-time-zone=timezone option. Vous pouvez vérifier le global et le temps de session zones avec

SELECT @@global.time_zone, @@session.time_zone;

définir un ou l'autre ou les deux avec l' SET déclaration, &c; voir http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html pour beaucoup plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X