Sur un serveur, lorsque je lance:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)
Sur un autre serveur:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)
ntp
- et voyez ce qui vous convient!"Réponses:
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]
@@ variable globale.time_zone
Pour voir quelle valeur ils sont définis:
Pour lui attribuer une valeur, utilisez l'une ou l'autre:
(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) etCEST
est une heure d'horloge qui correspond à un décalage spécifique.@@ session.time_zone variable
Pour le définir, utilisez l'un ou l'autre:
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
Il renverra 02:00:00 si votre fuseau horaire est +2: 00.
Pour obtenir l'horodatage UNIX actuel:
Pour obtenir la colonne d'horodatage en tant qu'horodatage UNIX
Pour obtenir une colonne datetime UTC en tant qu'horodatage UNIX
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?
la source
+00:00
n'est pas un fuseau horaire, c'est un décalage horaire. Que se passe-t-il en ce qui concerne l'heure d'été? Reste-t-il à +0 toute l'année?time_zone="+00:00"
vous définissez, vous définissez le fuseau horaire en utilisant un décalage par rapport à l'UTC, étant donné que la valeur définie ne change jamais et que l'UTC ne suit pas l'heure d'été, je peux supposer qu'elle reste la même toute l'année.+00:00
ressemble à un décalage, donc c'est assez étrange que MySQL ait choisi cela pour représenter UTC au lieu d'utiliser simplement la chaîne "UTC" elle-même. Merci pour l'info.C:\ProgramData\MySQL\MySQL Server x.x\my.ini
Pour toute personne ayant toujours ce problème:
A travaillé pour moi. Ajoutez juste
?serverTimezone=UTC
à la fin.la source
Asia/Ho_Chi_Minh
au lieu deUTC
BTW, la question est de changer le fuseau horaire de MySQL. Veuillez donc consulter la réponse @Timo. Si vous rencontrez des problèmes avec le docker MySQL, ajoutez l'environnement TZ et cela devrait fonctionner.SET time_zone=...
Lorsque vous pouvez configurer le serveur de fuseau horaire pour MySQL ou PHP:
Rappelles toi:
Changer le système de fuseau horaire. Exemple pour Ubuntu:
Redémarrez le serveur ou vous pouvez redémarrer Apache 2 et MySQL:
la source
Pour le définir pour la session en cours, procédez comme suit:
la source
SET time_zone = 'America/Boise'
. Merci pour la réponse, James Skidmore!SET time_zone = 'UTC';
paramètre est perdu lors du redémarrage du serveurExécutez simplement ceci sur votre serveur MySQL:
Où +8: 00 sera votre fuseau horaire.
la source
@@session.time_zone
tel que décrit dans d'autres réponses est une bien meilleure solution.Cela fonctionne pour moi pour un emplacement en Inde:
la source
Vous pouvez spécifier le fuseau horaire par défaut du serveur lorsque vous le démarrez, voir http://dev.mysql.com/doc/refman/5.1/en/server-options.html et en particulier l'
--default-time-zone=timezone
option. Vous pouvez vérifier les fuseaux horaires globaux et de session avecdéfinissez l'un ou les deux avec l'
SET
instruction, & c; voir http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html pour plus de détails.la source
Gardez à l'esprit que 'Country / Zone' ne fonctionne pas parfois ... Ce problème n'est pas lié au système d'exploitation, à la version de MySQL et au matériel - je l'ai rencontré depuis FreeBSD 4 et Slackware Linux en 2003 jusqu'à aujourd'hui. MySQL depuis la version 3 jusqu'au dernier tronc source. C'est ODD, mais cela arrive. Par exemple:
Et une déclaration comme celle-ci est censée fonctionner:
Mais vous avez ce problème:
Jetez un œil au sous-dossier de votre répertoire d'informations de zone et voyez le nom de fichier ACTUEL pour le lien symbolique, dans ce cas, il s'agit de EST5EDT. Essayez ensuite cette instruction:
Et cela fonctionne comme prévu! :) Gardez cette astuce à l'esprit; Je ne l'ai pas vu être documenté dans les manuels MySQL et la documentation officielle. Mais lire la documentation correspondante est une chose incontournable: la documentation officielle du fuseau horaire MySQL 5.5 - et n'oubliez pas de charger les données du fuseau horaire sur votre serveur comme ça (exécutez en tant qu'utilisateur root!):
Astuce numéro un - cela doit être fait exactement sous l'utilisateur root MySQL. Il peut échouer ou produire un résultat non fonctionnel, même de l'utilisateur qui a un accès complet à une base de données MySQL - j'ai moi-même vu le problème.
la source
Si vous utilisez PDO:
Si vous utilisez MySQLi:
Plus d'informations sur le formatage du décalage ici: https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/
la source
C'est une question vieille de 10 ans, mais de toute façon voici ce qui a fonctionné pour moi. J'utilise MySQL 8.0 avec Hibernate 5 et SpringBoot 4.
J'ai essayé la réponse acceptée ci-dessus mais je n'ai pas fonctionné pour moi, ce qui a fonctionné pour moi est le suivant:
Si cela vous aide, n'oubliez pas de voter positivement: D
la source
Question ancienne avec une autre suggestion:
Si vous avez récemment modifié le fuseau horaire du système d'exploitation, par exemple via:
... MySQL (ou MariaDB) ne remarquera rien tant que vous n'aurez pas redémarré le service db:
(ou)
la source
Si vous utilisez MySql Workbench, vous pouvez le configurer en ouvrant la vue administrateur et en sélectionnant l'onglet Avancé. La section supérieure est "Localisation" et la première case à cocher doit être "fuseau horaire par défaut". Cochez cette case, puis entrez votre fuseau horaire souhaité, redémarrez le serveur et vous devriez être prêt à partir.
la source
Tout d'abord pour savoir quelle est la zone temporelle, vous pouvez interroger
Votre sortie devrait être quelque chose de similaire comme suit
Ensuite, si vous voulez confirmer que vous vous trouvez dans un fuseau horaire comme CDT au lieu de quelque chose comme EST, vous pouvez vérifier l'heure à laquelle il pense que votre machine se trouve en disant
Si ce n'est pas le moment que vous voulez, vous devez le changer ... tout ce que vous devez faire est
SET time_zone = timezone_name
. Assurez-vous que celui-ci est auContinent/City
format.Si vous êtes sur un serveur partagé parce que vous avez un service d'hébergement, veuillez vous référer à ces réponses concernant la modification du fichier php.ini ou du fichier .htaccess.
la source
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p E
abord, puis j'aiSET time_zone = timezone_name
bien fonctionné.Vous devez configurer le fuseau horaire de votre emplacement. Pour suivre le processus ci-dessous
Ouvrez votre MSQLWorkbench, écrivez une simple commande sql comme celle-ci;
Et aussi votre URL pourrait être comme ça;
la source
Pour définir le fuseau horaire standard à MariaDB, vous devez aller dans le fichier 50-server.cnf .
Ensuite, vous pouvez entrer l'entrée suivante dans la section mysqld.
Exemple:
La modification doit être effectuée via le fichier de configuration, sinon le serveur MariaDB réinitialisera les tables mysql après un redémarrage!
la source
Editez le fichier de configuration MySQL
Faites défiler et ajoutez-les au bas. Changer de fuseau horaire pertinent
Redémarrez le serveur
la source
Sous Windows (IIS) afin de pouvoir SET GLOBAL time_zone = 'Europe / Helsinki' (ou autre), les tables de description de MySQL time_zone doivent être remplies en premier.
Je les ai téléchargés à partir de ce lien https://dev.mysql.com/downloads/timezones.html
Après avoir exécuté la requête SQL téléchargée, j'ai pu définir la zone_horaire mondiale et résoudre le problème que j'ai rencontré avec SELECT NOW (); renvoyait GMT plutôt que BST.
la source
Dans mon cas, la solution était de définir le paramètre serverTimezone dans les paramètres avancés sur une valeur appropriée (CET pour mon fuseau horaire).
Comme j'utilise IntelliJ, j'utilise son module de base de données. Lors de l'ajout d'une nouvelle connexion à la base de données et après l'ajout de tous les paramètres pertinents dans l'onglet Général, une erreur s'est produite sur le bouton "Tester la connexion". Encore une fois, la solution consiste à définir le paramètre serverTimezone dans l'onglet Avancé.
la source
Si quelqu'un utilise GoDaddy Shared Hosting, vous pouvez essayer la solution suivante, qui a fonctionné pour moi.
Lors du démarrage de la connexion DB, définissez la commande time_zone dans mon objet PDO, par exemple:
Où "+05: 30" est la zone horaire de l'Inde. Vous pouvez le changer selon vos besoins.
Après ça; tous les processus MySQL liés à la date et à l'heure sont définis avec le fuseau horaire requis.
Source: https://in.godaddy.com/community/cPanel-Hosting/How-to-change-TimeZone-for-MySqL/td-p/31861
la source