Comment changer mon fuseau horaire qui se trouve actuellement dans UTC à GMT +1, quelle est la ligne correcte et est-ce que je le saisis simplement dans l’exécution de phpMyAdmin SQL?
Mon hôte vient de me donner ce lien http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html et est parti donc je suis un peu perdu merci
émettre la commande:
SET time_zone = 'America/New_York';
(Ou quel que soit le fuseau horaire GMT + 1: http://www.php.net/manual/en/timezones.php )
Ceci est la commande pour définir le fuseau horaire MySQL pour un client individuel, en supposant que vos clients sont répartis sur plusieurs fuseaux horaires.
Cette commande doit être exécutée avant chaque commande SQL impliquant des dates. Si vos requêtes passent par une classe, cela est facile à mettre en œuvre.
La manière la plus simple de le faire, comme l’a noté Umar, est par exemple:
mysql> SET GLOBAL time_zone = 'America/New_York';
L’utilisation du fuseau horaire nommé est importante pour le fuseau horaire qui a un ajustement de sauvegarde de jour. Cependant, pour certaines versions de Linux, vous pouvez obtenir la réponse suivante:
# 1298 – Fuseau horaire inconnu ou incorrect
Si vous voyez cela, vous devrez peut-être exécuter une traduction tzinfo_to_sql … c’est facile à faire, mais pas évident. A partir de la ligne de commande linux, entrez:
mysql_tzinfo_to_sql /usr/share/zoneinfo/|mysql -u root mysql -p
Fournissez votre mot de passe root (racine MySQL, pas racine Linux) et il chargera toutes les définitions de votre zoneinfo dans mysql. Vous pouvez alors revenir en arrière et exécuter votre
mysql> SET GLOBAL time_zone = timezone;
Bien que la réponse de Bryon soit utile, je voudrais simplement append que son lien concerne les noms de fuseau horaire PHP, qui ne sont pas les mêmes que les noms de fuseau horaire MySQL.
Si vous souhaitez définir votre fuseau horaire pour une session individuelle sur GMT + 1 (UTC + 1 pour être précis), utilisez simplement la chaîne ‘+01: 00’ dans cette commande. C’est à dire:
SET time_zone = '+01:00';
Pour voir quel fuseau horaire utilise votre session MySQL, exécutez simplement ceci:
SELECT @@global.time_zone, @@session.time_zone;
Ceci est une excellente référence avec plus de détails: Référence MySQL 5.5 sur les fuseaux horaires
Voici comment synchroniser PHP (> = 5.3) et les fuseaux horaires MySQL par session et par parameters utilisateur. Mettez ceci là où il s’exécute lorsque vous avez besoin de fuseaux horaires définis et synchronisés.
date_default_timezone_set($my_timezone); $n = new \DateTime(); $h = $n->getOffset()/3600; $i = 60*($h-floor($h)); $offset = sprintf('%+d:%02d', $h, $i); $this->db->query("SET time_zone='$offset'");
Où $ my_timezone fait partie de la liste des fuseaux horaires de PHP: http://www.php.net/manual/en/timezones.php
Le fuseau horaire de PHP doit être converti en décalage horaire et minute pour MySQL. C’est ce que font les lignes 1-4.
Si vous disposez du privilège SUPER, vous pouvez définir la valeur du fuseau horaire global du serveur lors de l’exécution avec cette instruction:
mysql> SET GLOBAL time_zone = timezone;
Si SET time_zone ou SET GLOBAL time_zone ne fonctionne pas, vous pouvez modifier comme suit:
Changer le système de fuseau horaire, exemple: ubuntu … $ sudo dpkg-reconfigure tzdata
Redémarrez le serveur ou vous pouvez redémarrer apache2 et mysql (/etc/init.d/mysql restart)
Cela fonctionne bien
query("SET GLOBAL time_zone = 'Asia/Calcutta'"); $con->query("SET time_zone = '+05:30'"); $con->query("SET @@session.time_zone = '+05:30'"); ?>