Question 1 : Considération de l'heure d'été
Oui, vous avez raison. En spécifiant le nom du fuseau horaire (par exemple, "US/Eastern"), CONVERT_TZ() prend en compte l'heure d'été. L'appel de CONVERT_TZ('00:00:00', 'UTC', 'US/Eastern') renvoie '19:00:00' en janvier, reconnaissant que l'heure de l'Est est en retard de 5 heures sur UTC. À l'heure d'été, le résultat serait « 20 :00 :00 », car l'heure de l'Est avance d'une heure.
Question 2 : Mise à jour du tableau des fuseaux horaires
Si vous comptez uniquement sur le nom du fuseau horaire, vous n'avez pas besoin de mettre constamment à jour la table des fuseaux horaires pour maintenir les décalages à jour. CONVERT_TZ() prend en compte les paramètres de fuseau horaire actuels et les règles d'heure d'été.
Question 3 : Dépannage des retours NULL
Le retour NULL dans votre exemple de requête (CONVERT_TZ(' 2004-01-01 12:00:00','GMT','MET')) pourrait en effet être causé par un manque d'heure tableaux de zones. Pour vérifier cela, exécutez la requête suivante :
SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');
Si cela renvoie également NULL, cela indique que les tables de fuseaux horaires n'ont pas été configurées correctement.
Conseils supplémentaires
Au lieu d'ajouter ou de soustraire du temps directement, vous pouvez utiliser le mot-clé INTERVAL dans MySQL pour gérer les calculs de temps. Par exemple, vous pouvez soustraire un jour et ajouter quatre heures en utilisant :
now() - interval 1 day + interval 4 hour
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!