Catégories :

Fonctions de date et d’heure

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

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 doit être 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).

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 source_timestamp 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.

  • Pour source_tz et target_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

ALTER SESSION SET timestamp_output_format = 'YYYY-MM-DD HH24:MI:SS';

-- Convert a "wallclock" time in Los Angeles 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 |
+-------------------------+
Copy
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 |
+-------------------------------+
Copy
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 |
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+
Copy