- Catégories :
CONVERT_TIMEZONE¶
Convertit un horodatage en un autre fuseau horaire.
Syntaxe¶
CONVERT_TIMEZONE( <source_tz> , <target_tz> , <source_timestamp_ntz> )
CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
Arguments¶
source_tz
Chaîne spécifiant le fuseau horaire pour l’horodatage entré. Requis pour les horodatages sans fuseau horaire (c’est-à-dire TIMESTAMP_NTZ).
target_tz
Chaîne spécifiant le fuseau horaire dans lequel l’horodatage d’entrée est converti.
source_timestamp_ntz
Pour la version à 3 arguments, chaîne spécifiant l’horodatage à convertir (doit être TIMESTAMP_NTZ).
source_timestamp
Pour la version à 2 arguments, chaîne spécifiant l’horodatage à convertir (peut être toute variante d’horodatage, y compris TIMESTAMP_NTZ).
Renvoie¶
Renvoie une valeur de type TIMESTAMP_NTZ, TIMESTAMP_TZ ou NULL :
Pour la version à 3 arguments, renvoie une valeur de type TIMESTAMP_NTZ.
Pour la version à 2 arguments, renvoie une valeur de type TIMESTAMP_TZ.
Si un argument est NULL, renvoie NULL.
Notes sur l’utilisation¶
Le format d’affichage des horodatages dans la sortie est déterminé par le format de sortie de l’horodatage pour la session en cours et le type de données de la valeur d’horodatage renvoyée.
Pour la version à 3 arguments, l’heure « horloge murale » dans le résultat représente le même moment que l’entrée « horloge murale » dans le fuseau horaire d’entrée, mais dans le fuseau horaire cible.
Pour la version à 2 arguments, l’argument
source_timestamp
inclut généralement le fuseau horaire. Si la valeur est de type TIMESTAMP_TZ, le fuseau horaire est extrait de sa valeur. Sinon, le fuseau horaire de la session en cours est utilisé.Pour
source_tz
ettarget_tz
, vous pouvez spécifier un nom de fuseau horaire ou un nom de lien de la version 2021a de la base de données de fuseaux horaires (IANA) (par exemple,America/Los_Angeles
,Europe/London
,UTC
,Etc/GMT
, etc.).Note
Les noms de fuseaux horaires sont sensibles à la casse et doivent être entre guillemets simples (par ex.
'UTC'
).Snowflake ne prend pas en charge la majorité des abréviations de fuseaux horaires (par exemple,
PDT
,EST
, etc.) car une abréviation donnée peut faire référence à plusieurs fuseaux horaires différents. Par exemple,CST
peut faire référence à l’heure normale centrale en Amérique du Nord (UTC-6), à l’heure normale de Cuba (UTC-5) et à l’heure normale de Chine (UTC+8).
Exemples¶
Pour utiliser le format de sortie de l’horodatage par défaut pour les horodatages renvoyés dans les exemples, désactivez le paramètre TIMESTAMP_OUTPUT_FORMAT dans la session en cours :
ALTER SESSION UNSET TIMESTAMP_OUTPUT_FORMAT;
Exemples qui spécifient un fuseau horaire source¶
Les exemples suivants utilisent la version à 3 arguments de la fonction CONVERT_TIMEZONE et spécifient une valeur source_tz
. Ces exemples renvoient des valeurs TIMESTAMP_NTZ.
Convertir une heure « horloge murale » à Los Angeles en heure « horloge murale » correspondante à New York :
SELECT CONVERT_TIMEZONE(
'America/Los_Angeles',
'America/New_York',
'2024-01-01 14:00:00'::TIMESTAMP_NTZ
) AS conv;
+-------------------------+
| CONV |
|-------------------------|
| 2024-01-01 17:00:00.000 |
+-------------------------+
Convertir une heure « horloge murale » à Varsovie en heure « horloge murale » correspondante en UTC :
SELECT CONVERT_TIMEZONE(
'Europe/Warsaw',
'UTC',
'2024-01-01 00:00:00'::TIMESTAMP_NTZ
) AS conv;
+-------------------------+
| CONV |
|-------------------------|
| 2023-12-31 23:00:00.000 |
+-------------------------+
Exemples qui ne précisent pas de fuseau horaire source¶
Les exemples suivants utilisent la version à 2 arguments de la fonction CONVERT_TIMEZONE. Ces exemples renvoient des valeurs TIMESTAMP_TZ. Par conséquent, les valeurs renvoyées incluent un décalage qui montre la différence entre le fuseau horaire de l’horodatage et le temps universel coordonné (UTC). Par exemple, le fuseau horaire America/Los_Angeles
a un décalage de -0700
pour montrer qu’il a sept heures de retard UTC.
Convertir une chaîne spécifiant une valeur TIMESTAMP_TZ dans un fuseau horaire différent :
SELECT CONVERT_TIMEZONE(
'America/Los_Angeles',
'2024-04-05 12:00:00 +02:00'
) AS time_in_la;
+-------------------------------+
| TIME_IN_LA |
|-------------------------------|
| 2024-04-05 03:00:00.000 -0700 |
+-------------------------------+
Afficher l’heure actuelle de « l’horloge murale » dans différents fuseaux horaires :
SELECT
CURRENT_TIMESTAMP() AS now_in_la,
CONVERT_TIMEZONE('America/New_York', CURRENT_TIMESTAMP()) AS now_in_nyc,
CONVERT_TIMEZONE('Europe/Paris', CURRENT_TIMESTAMP()) AS now_in_paris,
CONVERT_TIMEZONE('Asia/Tokyo', CURRENT_TIMESTAMP()) AS now_in_tokyo;
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+
| NOW_IN_LA | NOW_IN_NYC | NOW_IN_PARIS | NOW_IN_TOKYO |
|-------------------------------+-------------------------------+-------------------------------+-------------------------------|
| 2024-06-12 08:52:53.114 -0700 | 2024-06-12 11:52:53.114 -0400 | 2024-06-12 17:52:53.114 +0200 | 2024-06-13 00:52:53.114 +0900 |
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+