Maison > base de données > tutoriel mysql > Comment la fonction CONVERT_TZ() de MySQL gère-t-elle l'heure d'été ?

Comment la fonction CONVERT_TZ() de MySQL gère-t-elle l'heure d'été ?

DDD
Libérer: 2024-11-28 14:33:11
original
940 Les gens l'ont consulté

How Does MySQL's CONVERT_TZ() Function Handle Daylight Saving Time?

MySQL CONVERT_TZ() avec heure d'été

Lors du stockage d'alertes quotidiennes dans une base de données spécifiées dans des fuseaux horaires locaux définis par l'utilisateur, il est crucial de prendre en compte l’heure d’été (DST). Cet article explore l'utilisation de la fonction CONVERT_TZ() pour prendre en charge l'heure d'été et répond aux questions courantes liées à sa mise en œuvre.

Question 1 : Conversion de fuseau horaire avec l'heure d'été

Le La fonction CONVERT_TZ() prend en compte l'heure d'été lors de la spécification des noms de fuseau horaire. Par exemple, la conversion de l'heure UTC en heure des États-Unis/de l'Est devrait donner des résultats différents selon que l'heure d'été est en vigueur ou non. Cela correspond à votre compréhension selon laquelle CONVERT_TZ('00:00:00', 'UTC', 'US/Eastern') devrait renvoyer « 19:00:00 » le 1er janvier et « 20:00:00 » le 1er juillet.

Question 2 : Mises à jour de la table des fuseaux horaires MySQL

Si la fonction CONVERT_TZ() fonctionne correctement, il n'est généralement pas nécessaire de mettre à jour manuellement la table des fuseaux horaires de MySQL. MySQL gère une base de données interne qui stocke les informations de fuseau horaire et les met à jour si nécessaire en fonction des modifications apportées aux réglementations de fuseau horaire. Toutefois, si vous avez personnalisé les paramètres de votre fuseau horaire, il est recommandé de consulter périodiquement le tableau pour garantir son exactitude.

Question 3 : Valeurs nulles de CONVERT_TZ()

Si CONVERT_TZ() renvoie NULL, cela indique que les tables de fuseaux horaires MySQL ne sont pas configurées correctement. Vous pouvez le vérifier en exécutant la requête suivante :

SELECT CONVERT_TZ(now(), 'US/Eastern', 'US/Central');
Copier après la connexion

Si cette requête renvoie NULL, cela suggère que les tables ne sont pas configurées. Pour résoudre ce problème, vous pouvez vous référer à la documentation MySQL pour obtenir des instructions sur la configuration des tables de fuseaux horaires.

Approche alternative

Si vous ne souhaitez pas vous fier au Dans les tables de fuseaux horaires MySQL, vous pouvez utiliser l'approche suivante :

  1. Stockez le décalage horaire de l'utilisateur par rapport à UTC en heures dans un fichier séparé table.
  2. Utilisez la fonction utc_timezone() pour obtenir l'heure UTC actuelle.
  3. Calculez l'heure locale de l'utilisateur en soustrayant le décalage horaire.

Par exemple :

SELECT utc_timezone() - interval user_timezone_offset_in_hours hour
FROM userinfo a
WHERE user_id = 999;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal