CONVERT_TZ

CONVERT_TZ(dt, from_tz, to_tz)

Convertit une date et une heure d’un fuseau horaire à un autre. Le fuseau s’indique sous forme de décalage ('-05:00') ou de nom ('America/New_York') – les noms ne fonctionnent toutefois que si le serveur a chargé les tables de fuseaux horaires.

Paramètres

  • dt – une valeur DATETIME.
  • from_tz, to_tz – un décalage comme '+00:00', '-04:00' ou le nom d’un fuseau horaire.

Exemples

SELECT CONVERT_TZ('2026-03-01 12:00:00', '+00:00', '-05:00') AS new_york_winter,
  CONVERT_TZ('2026-07-15 12:00:00', '+00:00', '-04:00') AS new_york_summer;
+---------------------+---------------------+
| new_york_winter     | new_york_summer     |
+---------------------+---------------------+
| 2026-03-01 07:00:00 | 2026-07-15 08:00:00 |
+---------------------+---------------------+

Points d’attention

  • Un décalage fixe ne connaît pas l’heure d’été – New York est à -05:00 en hiver et à -04:00 en été. Seul un fuseau nommé ('America/New_York') convertit correctement selon la date.
  • Les fuseaux nommés exigent sur le serveur des tables mysql.time_zone* remplies. Sans elles, CONVERT_TZ() avec un nom renvoie NULL. Sur un hébergement mutualisé, les tables manquent souvent – état en octobre 2026, par exemple sur le serveur MariaDB 10.11 qui fait tourner ce site. Vérifiez-le donc ou convertissez l’heure en PHP.
  • Le type TIMESTAMP stocke l’heure en UTC et la convertit automatiquement selon le time_zone de la session ; le type DATETIME stocke la valeur telle quelle.

Voir aussi :
UTC_TIMESTAMP()
NOW()
UNIX_TIMESTAMP()