MySQL: Obtenir l'heure locale pour un fuseau horaire spécifique
Voici une version simple de la table users
:
+--------------+-------------------+
| id | timezone |
+--------------+-------------------+
| 1 | 'Europe/Helsinki' |
| 2 | 'Europe/Paris' |
+--------------+-------------------+
Je veux savoir quel est le heure locale, pour chacun de ces utilisateurs (en fonction des fuseaux horaires), de sorte que je peux sélectionner des utilisateurs pour qui il est 4 heures par exemple.
Je suis en utilisant la pile LAMP, mais j'aimerais le faire à l'aide de MySQL uniquement (ne pas sélectionner tous les utilisateurs et de les exécuter dans une boucle PHP).
pourquoi n'utilisez-vous pas CONVERT_TZ? dev.mysql.com/doc/refman/5.5/en/...
Parce que j'étais un imbécile évidemment. Sachant que mon serveur MySQL est en France,
J'ai souvent qu'un vendredi après-midi 🙂
Parce que j'étais un imbécile évidemment. Sachant que mon serveur MySQL est en France,
SELECT CONVERT_TZ( NOW( ) , 'Europe/Paris', 'America/New_York' )
fonctionne parfaitement bien! S'il vous plaît ajouter une réponse à cette question en disant cela, et je vais l'accepter.J'ai souvent qu'un vendredi après-midi 🙂
OriginalL'auteur Pioul | 2012-09-21
Vous devez vous connecter pour publier un commentaire.
Utiliser le CONVERT_TZ pour cela:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_convert-tz
OriginalL'auteur Nin
Vous pouvez modifier le fuseau horaire avec
set time_zone
:Cela, vous pouvez, par exemple, définir une fonction qui renvoie l'heure courante de l'utilisateur, fuseau horaire:
Noter que la DATE, l'HEURE et les valeurs DATETIME ne dépendent pas de l'horaire, de sorte que les valeurs des colonnes de ces types de ne sont pas automatiquement ajusté lors de l'interrogation. Des valeurs d'HORODATAGE sont ajustés:
Si
set time_zone
échoue avec ce message d'erreur:vous devez charger le fuseau horaire info dans mysql avec une commande comme ceci:
Pour plus d'info voir http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html
Vous pouvez créer une fonction qui définit la variable, et appeler la fonction dans la requête... Voir la mise à jour.
Qui serait à l'œuvre, mais @nin réponse est ce que je cherchais. Merci bien!
Wow, je ne savais pas à propos de convert_tz et simplement supposé rien de tout cela n'existe!
OriginalL'auteur Joni
Plus générique (pas selon le fuseau horaire du serveur) solution de Nin, la réponse serait:
Ce serait bien si MySQL a une fonction comme NOW_TZ(fuseau horaire).
OriginalL'auteur Mark1