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()