- 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).
cible_tz
Chaîne spécifiant le fuseau horaire dans lequel l’horodatage d’entrée doit être converti.
source_horodatage_ntz
Pour la version à 3 arguments, chaîne spécifiant l’horodatage à convertir (doit être TIMESTAMP_NTZ).
source_horodatage
Pour la version à 2 arguments, chaîne spécifiant l’horodatage à convertir (peut être toute variante d’horodatage, y compris TIMESTAMP_NTZ).
Notes sur l’utilisation¶
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 de destination.
La valeur renvoyée est toujours de type TIMESTAMP_NTZ.
Pour la version à 2 arguments :
L’argument
horodatage_source
est considéré comme incluant 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é.La valeur renvoyée est toujours de type TIMESTAMP_TZ.
Snowflake prend en charge les fuseaux horaires standard iana.org : Amérique /Los_Angeles, Europe/Londres, UTC, Etc/GMT, etc. Toutefois, certains fuseaux horaires simples, tels que PDT, ne sont actuellement pas pris en charge.
Pour obtenir une liste des fuseaux horaires, voir Fuseaux horaires de la base de données tz (dans Wikipédia).
Les noms de fuseaux horaires sont sensibles à la casse et doivent être placés entre guillemets simples.
Exemples¶
ALTER SESSION SET timestamp_output_format = 'YYYY-MM-DD HH24:MI:SS';
-- Convert a "wallclock" time in Los Angelese to the matching "wallclock" time in New York
SELECT CONVERT_TIMEZONE('America/Los_Angeles', 'America/New_York', '2019-01-01 14:00:00'::timestamp_ntz) AS conv;
+-------------------------+
| CONV |
|-------------------------|
| 2019-01-01 17:00:00.000 |
+-------------------------+
-- Convert a "wallclock" time in Warsaw to the matching "wallclock" time in UTC
SELECT CONVERT_TIMEZONE('Europe/Warsaw', 'UTC', '2019-01-01 00:00:00'::timestamp_ntz) AS conv;
+-------------------------+
| CONV |
|-------------------------|
| 2018-12-31 23:00:00.000 |
+-------------------------+
ALTER SESSION UNSET timestamp_output_format;
-- Convert TIMESTAMP_TZ to a different time zone and include the time zone in the result
SELECT CONVERT_TIMEZONE('America/Los_Angeles', '2018-04-05 12:00:00 +02:00') AS time_in_la;
+-------------------------------+
| TIME_IN_LA |
|-------------------------------|
| 2018-04-05 03:00:00.000 -0700 |
+-------------------------------+
ALTER SESSION UNSET timestamp_output_format;
-- Show the current "wallclock" time in different time zones
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 |
|-------------------------------+-------------------------------+-------------------------------+-------------------------------|
| 2019-01-11 14:23:08.497 -0800 | 2019-01-11 17:23:08.497 -0500 | 2019-01-11 23:23:08.497 +0100 | 2019-01-12 07:23:08.497 +0900 |
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+