Converte uma string de data VARCHAR em um valor TIMESTAMP no fuso horário do ambiente de execução do Flink.
Sintaxe
TIMESTAMP TO_TIMESTAMP_TZ(VARCHAR date, VARCHAR timezone)
TIMESTAMP TO_TIMESTAMP_TZ(VARCHAR date, VARCHAR format, VARCHAR timezone)
A primeira versão analisa date com o formato padrão yyyy-MM-dd HH:mm:ss e interpreta o resultado no timezone especificado.
A segunda versão permite definir um format personalizado para a string de data de entrada antes da conversão de timezone.
Parâmetros de entrada
|
Parâmetro |
Tipo de dados |
Descrição |
|
|
VARCHAR |
String de data de entrada. |
|
|
VARCHAR |
Formato da string de data de entrada. Valor padrão: |
|
|
VARCHAR |
Fuso horário da data de entrada, definido por um nome de fuso horário IANA (por exemplo, |
Observações de uso
Use nomes de fuso horário IANA no parâmetro
timezone. Valores não padrão fazem o parâmetro assumir UTC.O parâmetro
formataplica-se somente à segunda sobrecarga. O formato padrão éyyyy-MM-dd HH:mm:ss.
Exemplo
Este exemplo considera que o ambiente de execução do Flink opera no fuso horário Asia/Shanghai (UTC+8).
Dados de teste — Tabela T1
|
timestamp1 (VARCHAR) |
format1 (VARCHAR) |
timezone1 (VARCHAR) |
|
1970-01-01 00:00:00 |
yyyy-MM-dd HH:mm:ss |
/ |
|
timestamp2 (VARCHAR) |
format2 (VARCHAR) |
timezone2 (VARCHAR) |
|
1970-01-01 00:00:00 |
yyyy-MM-dd HH:mm:ss |
Asia/Shanghai |
|
timestamp3 (VARCHAR) |
format3 (VARCHAR) |
timezone3 (VARCHAR) |
|
1970-01-01 00:00:00 |
yyyy-MM-dd HH:mm:ss |
America/New_York |
Instrução de teste
SELECT
TO_TIMESTAMP_TZ(timestamp1, timezone1) AS var1, -- returns 1970-01-01 08:00:00
TO_TIMESTAMP_TZ(timestamp2, format2, timezone2) AS var2, -- returns 1970-01-01 00:00:00
TO_TIMESTAMP_TZ(timestamp3, format3, timezone3) AS var3 -- returns 1970-01-01 13:00:00
FROM T1;
Resultado do teste
|
var1 (VARCHAR) |
var2 (VARCHAR) |
var3 (VARCHAR) |
|
1970-01-01 08:00:00 |
1970-01-01 00:00:00 |
1970-01-01 13:00:00 |
Explicação dos resultados
var1: Como
timezone1é/(valor não padrão), a função usa UTC. O ambiente de execução do Flink emAsia/Shanghai(UTC+8) exibe a época UTC1970-01-01 00:00:00como1970-01-01 08:00:00.var2: Como
timezone2éAsia/Shanghai, igual ao fuso horário de execução do Flink, a entrada já está nesse fuso. Assim, o TIMESTAMP permanece inalterado:1970-01-01 00:00:00.var3: Aqui,
timezone3éAmerica/New_York(UTC-5). A meia-noite em Nova York corresponde a1970-01-01 05:00:00UTC. O ambiente de execução do Flink emAsia/Shanghai(UTC+8) exibe esse momento como1970-01-01 13:00:00.