Je veux faire en sorte que les appels à NOW() et CURDATE() dans les requêtes MySQL renvoient la date en UTC. Comment faire pour que cela se produise sans passer par et changer toutes les requêtes qui utilisent ces fonctions?Comment faire pour que les fonctions NOW() et CURDATE() de MySQL utilisent UTC?
Répondre
enfin trouvé ce que je cherchais ...
En my.cnf,
[mysqld_safe]
timezone = UTC
J'étais mettre cette option sous [mysqld], et mysql ne parvenait pas à démarrer.
Appel de "SET time_zone = '+ 0:00';" sur chaque chargement de page fonctionnerait également, mais je n'aime pas l'idée d'appeler cette requête sur chaque chargement de page.
Donc, c'est vrai pour tout le monde que timezone = UTC doit aller dans [mysqld_safe], et non dans [mysqld]? – Jimmy
Le mettre dans [mysqld] le rend incapable de démarrer. Mais pour moi, le mettre dans [mysqld_safe] met toujours les dates en heure locale lorsque vous utilisez NOW(). – sigurdga
Ce paramètre ne modifie pas mysql en UTC pour moi - mysql 5.5.47-0ubuntu0.14.04.1. La réponse d'arulraj ci-dessous a fonctionné pour moi, cependant. – Julian
Définissez l'horloge de votre serveur sur UTC. Pas vraiment.
Si vous pouvez le faire, faites-le. L'un des plus gros problèmes est le "cron" des travaux etc, fonctionnant dans le fuseau horaire local, cela signifie que certains travaux cron seront manqués une fois par an, et tout le reste fonctionnera à un autre moment GMT pendant la moitié de l'année (Je suppose que vous êtes dans un fuseau horaire qui a l'heure d'été ici). MySQL a un support de fuseau horaire, mais c'est fou et foiré. Ne l'utilisez pas si vous ne le devez pas. Réglez simplement l'horloge de votre serveur sur UTC et l'heure commencera à fonctionner comme elle le devrait. Je sais que la modification de l'horloge du serveur est un changement majeur pour tout système géré, et que vous pourriez avoir un grand nombre de serveurs et de services qui pourraient être affectés, mais essayez de le faire malgré tout. Le travail d'assurance qualité peut être important, mais essayez.
J'ai déjà lu ceci, et je me demandais ce que vous faisiez quand vous développez? Est-ce que vous définissez le temps de votre PC de développement à UTC? –
Vous développez dans des machines virtuelles et définissez les horloges de machines virtuelles à UTC. Ne vous développez jamais sur votre PC de bureau, c'est très pénible, surtout s'il s'agit d'un PC Windows géré par le service informatique de votre entreprise qui effectue des changements de configuration arbitraires via la stratégie de groupe sur un coup de tête. – MarkR
C'est certainement le moyen de le faire. Après avoir défini le fuseau horaire de votre machine virtuelle, assurez-vous de redémarrer le serveur MySQL. – DanO
Vous devrez utiliser l'instruction SET TIMESTAMP pour mettre en forme les résultats datetime dans le format souhaité. Cela signifiera changer toutes ces requêtes. sysdate() n'obéira pas à cela.
La bonne façon de faire est de changer le fuseau horaire de votre serveur en UTC, comme l'a dit MarkR.
Toutefois, il est également possible d'utiliser SET time_zone pour modifier le fuseau horaire de votre session en cours.
A partir du manuel:
Le réglage de l'heure de la session de la zone affecte l'affichage et le stockage des valeurs de temps qui sont sensibles à la zone. Cela inclut les valeurs affichées par des fonctions telles que NOW() ou CURTIME()
fichier Goto et ajoutez cette ligne ci-dessous sous section [mysqld]
default-time-zone = ': +00 00'
puis redémarrez votre mysql. Maintenant, sélectionnez curtime(); montre l'heure GMT.
sur mac osx, homebrew mysql 5.6 cela ne fonctionne pas. – Jaap
Si vous changez le fuseau horaire sur vos serveurs de production en cours d'exécution ou la mise à jour d'un paramètre de configuration clé et le redémarrage de MySQL ne semble pas réaliste et/ou surpuissant, essayez ceci:
CONVERT_TZ(NOW(), 'US/Pacific', 'UTC')
Où US/Pacific
est le fuseau horaire de votre NOW()
appel renvoie le
Notez que cela nécessite que [les tables de fuseaux horaires soient remplies] (https://dev.mysql.com/doc/refman/5.7/fr/time-zone-support.html) – Dezza
- 1. Comment obtenir CURDATE()/NOW() sur une requête JPA nommée?
- 2. Comment faire pour que le mode sql d'Emacs reconnaisse les commentaires de style # MySQL?
- 3. Comment faire en sorte que PHPMyAdmin affiche les avertissements MySQL?
- 4. Besoin d'aide pour DATE_FORMAT (p.date, '% Y-% m-% d') = CURDATE()
- 5. Comment puis-je faire en sorte que plusieurs applications utilisent le même système d'authentification?
- 6. Tests unitaires Rails pour les fonctions qui utilisent des pièces jointes
- 7. Comment obtenir Ltk pour afficher ce que l'utilisateur écrit et ce que les fonctions impriment?
- 8. Impossible de définir _timestamp ou now() avec PDO sur MySQL
- 9. Comment utiliser les fonctions MySQL lors de la création d'une requête avec Zend/PDO
- 10. MySQL/PHP: Fonctions de date pour les statistiques d'affichage de page et la popularité
- 11. Comment faire pour que les appels du serveur sql jdbc à la procédure stockée utilisent un curseur côté serveur?
- 12. Je pensais que curtime(), now() et current_timestamp sont des valeurs de date-heure par défaut valides dans MySQL?
- 13. Que sont les fichiers de fonctions PHP et leurs utilisateurs?
- 14. wxPython: comment faire deux barres d'outils utilisent une barre d'état pour les info-bulles?
- 15. Est-ce que toutes les webcams utilisent YUY2?
- 16. tester des applications python qui utilisent mysql
- 17. UTC Problèmes, je ne sais pas comment les résoudre (PHP/MySQL)
- 18. Meilleures façons de gérer les heures UTC et d'heure d'été
- 19. Comment faire pour que Groovy et JAXB jouent bien ensemble
- 20. Comment les rails utilisent-ils la mémoire?
- 21. Comment faire pour que l'utilisateur persiste entre les sessions?
- 22. Comment faire pour décomposer les rapports par mois avec php et mysql?
- 23. Comment faire pour que MSBuild référence les bons assemblages?
- 24. Les méthodes xx et yy utilisent le même SOAPAction
- 25. Comment faire pour que Fiddler écoute toutes les adresses IP
- 26. mysql structure pour les commentaires et les réponses de commentaires
- 27. Comment faire pour supprimer les balises html et les informations de sérialisation php de résultat mysql sans php?
- 28. Comment faire pour que SQL Server ignore les vérifications?
- 29. Faire en sorte que MySQL affiche toutes les évaluations des utilisateurs, puis trier les résultats en utilisant les évaluations?
- 30. Comment faire une boucle sur les résultats de MySQL facilement?
Pas exactement ce que vous demandez, mais il est parfois préférable d'utiliser UTC_TIMESTAMP() –
Cela pourrait vous aider: http://stackoverflow.com/questions/19023978/should-mysql-have-its-timezone-set -to-utc –
que diriez-vous de ceci: http://w3resource.com/mysql/date -and-time-functions/mysql-utc_timestamp-function.php – zx1986