Categorias:

Funções de data e hora

CONVERT_TIMEZONE

Converte um carimbo de data/hora em outro fuso horário.

Sintaxe

CONVERT_TIMEZONE( <source_tz> , <target_tz> , <source_timestamp_ntz> )

CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
Copy

Argumentos

source_tz

Cadeia de caracteres especificando o fuso horário para o carimbo de data/hora de entrada. Necessário para carimbos de data/hora sem fuso horário (ou seja, TIMESTAMP_NTZ).

target_tz

Cadeia de caracteres especificando o fuso horário para o qual o carimbo de data/hora de entrada deve ser convertido.

source_timestamp_ntz

Para a versão de 3 argumentos, a cadeia de caracteres especificando o carimbo de data/hora a converter (deve ser TIMESTAMP_NTZ).

source_timestamp

Para a versão de 2 argumentos, a cadeia de caracteres especificando o carimbo de data/hora a converter (pode ser qualquer variante de carimbo de data/hora, incluindo TIMESTAMP_NTZ).

Notas de uso

  • Para a versão de 3 argumentos:

    • A hora do “relógio de parede” no resultado representa o mesmo momento no tempo que o “relógio de parede” na zona da hora de entrada, mas no fuso horário de destino.

    • O valor de retorno é sempre do tipo TIMESTAMP_NTZ.

  • Para a versão de 2 argumentos:

    • O argumento source_timestamp é considerado para incluir o fuso horário. Se o valor for do tipo TIMESTAMP_TZ, o fuso horário é tirado de seu valor. Caso contrário, é utilizado o fuso horário da sessão atual.

    • O valor de retorno é sempre do tipo TIMESTAMP_TZ.

  • Para source_tz e target_tz, você pode especificar um nome do fuso horário ou um nome do link da versão 2021a do Banco de dados de fuso horário IANA (como America/Los_Angeles, Europe/London, UTC, Etc/GMT etc.).

    Nota

    • Os nomes de fuso horário diferenciam maiúsculas de minúsculas e precisam ser colocados entre aspas simples (por exemplo, 'UTC').

    • O Snowflake não oferece suporte à maioria das abreviações de fuso horário (por exemplo, PDT, EST etc.) porque uma determinada abreviação pode se referir a um dos vários fusos horários diferentes. Por exemplo, CST pode se referir ao Horário Padrão Central na América do Norte (UTC-6), ao Horário Padrão de Cuba (UTC-5) e ao Horário Padrão da China (UTC8).

Exemplos

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