A função TO_TIMESTAMP_NTZ converte dados de data e hora de diferentes tipos de entrada em um valor TIMESTAMP_NTZ. Três sobrecargas são compatíveis: uma entrada TIMESTAMP com fuso horário de destino, uma entrada STRING formatada e um deslocamento de época BIGINT.
Sintaxe
Sobrecarga 1: Converter TIMESTAMP para TIMESTAMP_NTZ
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(TIMESTAMP <timestamp>, STRING <time_zone>)
Sobrecarga 2: Converter uma STRING formatada para TIMESTAMP_NTZ
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(STRING <date>, STRING <format> [, STRING <time_zone>])
Sobrecarga 3: Converter um deslocamento de época BIGINT para TIMESTAMP_NTZ
TIMESTAMP_NTZ TO_TIMESTAMP_NTZ(BIGINT <time>, STRING <date_part>)
Parâmetros
Parâmetros da Sobrecarga 1
|
Parâmetro |
Obrigatório |
Tipo |
Descrição |
|
|
Sim |
TIMESTAMP |
Valor |
|
|
Sim |
STRING |
Fuso horário de destino. Para valores compatíveis, consulte Fusos horários. |
Parâmetros da Sobrecarga 2
|
Parâmetro |
Obrigatório |
Tipo |
Descrição |
|
|
Sim |
STRING |
String que representa a data e a hora no formato especificado por |
|
|
Sim |
STRING |
Padrão de formato que descreve a estrutura de |
|
|
Não |
STRING |
Fuso horário da string de entrada. O padrão é UTC se não especificado. Para valores compatíveis, consulte Fusos horários. |
Parâmetros da Sobrecarga 3
|
Parâmetro |
Obrigatório |
Tipo |
Descrição |
|
|
Sim |
BIGINT |
Deslocamento numérico de tempo a converter. |
|
|
Sim |
STRING |
Unidade do valor |
Elementos de formato
O parâmetro format na Sobrecarga 2 aceita os seguintes elementos.
Elementos de data
|
Elemento |
Descrição |
|
|
Ano com século (ex.: 2025). |
|
|
Ano sem século (00–99). Zero à esquerda opcional. |
|
|
Mês como número decimal (01–12). |
|
|
Nome completo do mês (ex.: January). |
|
|
Nome abreviado do mês (ex.: Jan). |
|
|
Dia do mês como número decimal (01–31). |
|
|
Dia do mês sem zero à esquerda (1–31). Por exemplo, |
|
|
Equivalente a |
Elementos de hora
|
Elemento |
Descrição |
|
|
Hora no formato de 24 horas (00–23). |
|
|
Minuto como número decimal (00–59). |
|
|
Segundo como número decimal (00–60). |
|
|
Hora no formato |
|
|
Equivalente a |
|
|
Milissegundos como decimal de três dígitos (000–999). Use |
|
|
Deslocamento numérico de fuso horário ( |
|
|
Segundos com |
|
|
Segundos com precisão total de 6 dígitos. Por exemplo, |
Valores de retorno
Valores de retorno da Sobrecarga 1
Retorna um valor TIMESTAMP_NTZ no fuso horário especificado.
|
Condição |
Resultado |
|
|
Erro |
|
|
NULL |
Valores de retorno da Sobrecarga 2
Retorna um valor TIMESTAMP_NTZ. O fuso horário da sessão ou do projeto não afeta a entrada nem a saída.
|
Condição |
Resultado |
|
|
NULL |
|
|
NULL |
Valores de retorno da Sobrecarga 3
Retorna um valor TIMESTAMP_NTZ calculado pela adição de time à época 1970-01-01 00:00:00 UTC. O fuso horário da sessão ou do projeto não afeta a entrada nem a saída.
|
Condição |
Resultado |
|
|
Erro |
|
|
NULL |
Notas de uso
Fuso horário da sessão e Sobrecarga 1: Ao passar um valor
TIMESTAMP, o MaxCompute o interpreta no fuso horário atual da sessão ou do projeto (odps.sql.timezone) antes de converter para o fuso horário de destino. Alterarodps.sql.timezonemodifica o resultado.Fuso horário da sessão e Sobrecargas 2 e 3: O fuso horário da sessão ou do projeto não influencia a conversão. O parâmetro
time_zonena Sobrecarga 2 e a aritmética baseada em época na Sobrecarga 3 independem deodps.sql.timezone.Tratamento de NULL: As Sobrecargas 2 e 3 retornam NULL para entradas NULL, exceto
timena Sobrecarga 3, que gera erro. A Sobrecarga 1 gera erro quandotimestampé NULL.Ano ausente na Sobrecarga 2: Se a string
formatomitir o elemento de ano, o valor padrão será 1970.
Exemplos
Converter TIMESTAMP para TIMESTAMP_NTZ
O fuso horário da sessão está definido como Asia/Shanghai. O MaxCompute interpreta o TIMESTAMP de entrada nesse fuso horário e o converte para o fuso horário de destino especificado.
SET odps.sql.timezone=Asia/Shanghai;
-- Returns 2025-04-08 08:10:30.123456789
-- Asia/Shanghai (UTC+8) to Etc/GMT (UTC+0): subtract 8 hours
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', 'Etc/GMT');
-- Returns 2025-04-08 17:10:30.123456789
-- Asia/Shanghai (UTC+8) to Asia/Tokyo (UTC+9): add 1 hour
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', 'Asia/Tokyo');
-- Returns 2025-04-08 16:10:30.123456789
-- Same time zone: no offset applied
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', 'Asia/Shanghai');
-- Returns NULL
SELECT TO_TIMESTAMP_NTZ(TIMESTAMP '2025-04-08 16:10:30.123456789', NULL);
Converter uma string formatada para TIMESTAMP_NTZ
O fuso horário da sessão não afeta estas consultas. O parâmetro time_zone nos dois últimos exemplos controla a interpretação da string de entrada.
SET odps.sql.timezone=Asia/Shanghai;
-- Returns 2017-11-11 00:00:00.123
SELECT TO_TIMESTAMP_NTZ('17-11-11 00:00:00.123', '%y-mm-dd hh:mi:ss.ff3');
-- Returns 2017-11-11 00:00:00.123
-- %y treats '0017' as year 17, then adds the century prefix: 2017
SELECT TO_TIMESTAMP_NTZ('0017-11-11 00:00:00.123', '%y-mm-dd hh:mi:ss.ff3');
-- Returns 1970-11-11 00:00:00.123
-- Year element is missing; defaults to 1970
SELECT TO_TIMESTAMP_NTZ('11-11 00:00:00.123', 'mm-dd hh:mi:ss.ff3');
-- Returns 2025-05-18 15:30:00
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 MAY', '%F %X %B');
-- Returns 2025-05-18 15:30:00
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 may', '%F %X %h');
-- Returns 2025-05-18 15:30:00
SELECT TO_TIMESTAMP_NTZ('2025-05-18 15:30:00 may', '%F %T %b');
-- Returns 2025-05-18 10:20:00
SELECT TO_TIMESTAMP_NTZ('20250518 10:20:00', 'yyyymm%e %T');
-- Returns 2025-05-18 02:30:00
-- Input includes a +07:00 offset; converted to UTC
SELECT TO_TIMESTAMP_NTZ('2025-05-18 09:30:00+07:00', '%F %H:%M:%S%Ez');
-- Returns 2025-04-08 16:10:30.123456
-- time_zone is Etc/GMT (UTC+0); no offset adjustment
SELECT TO_TIMESTAMP_NTZ('2025-04-08 16:10:30.123456', '%Y-%m-%d %H:%M:%E*S', 'Etc/GMT');
-- Returns 2025-04-08 08:10:30.123
-- Input is in Asia/Shanghai (UTC+8); converted to UTC
SELECT TO_TIMESTAMP_NTZ('2025-04-08 16:10:30.123', '%Y-%m-%d %H:%M:%E3S', 'Asia/Shanghai');
Converter um deslocamento de época BIGINT para TIMESTAMP_NTZ
A função adiciona o valor time à época 1970-01-01 00:00:00 UTC. O parâmetro date_part define a unidade. Os exemplos a seguir usam o mesmo valor BIGINT para demonstrar como a unidade afeta o resultado.
SET odps.sql.timezone=Asia/Shanghai;
-- Same input value (99999341234), three different units:
-- Returns 1973-03-03 09:35:41.234 (milliseconds)
SELECT TO_TIMESTAMP_NTZ(99999341234, 'MILLIS');
-- Returns 1970-01-02 03:46:39.341234 (microseconds)
SELECT TO_TIMESTAMP_NTZ(99999341234, 'MICROS');
-- Returns 1970-01-01 00:01:39.999341234 (nanoseconds)
SELECT TO_TIMESTAMP_NTZ(99999341234, 'NANOS');
-- Negative values represent offsets before the epoch
-- Returns 1966-10-31 14:24:18.766
SELECT TO_TIMESTAMP_NTZ(-99999341234, 'MILLIS');
-- Returns NULL
SELECT TO_TIMESTAMP_NTZ(99999341234, NULL);
Tópicos relacionados
TO_TIMESTAMP_NTZ é uma função de data. Para outras funções de cálculo e conversão de datas, consulte Funções de data.