Todos os produtos
Search
Central de documentação

MaxCompute:TO_TIMESTAMP_NTZ

Última atualização: Jun 27, 2026

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

timestamp

Sim

TIMESTAMP

Valor TIMESTAMP a converter.

time_zone

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

date

Sim

STRING

String que representa a data e a hora no formato especificado por format.

format

Sim

STRING

Padrão de formato que descreve a estrutura de date. Consulte Elementos de formato abaixo.

time_zone

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

time

Sim

BIGINT

Deslocamento numérico de tempo a converter.

date_part

Sim

STRING

Unidade do valor time. Valores válidos: MILLIS (milissegundos), MICROS (microssegundos), NANOS (nanossegundos).

Elementos de formato

O parâmetro format na Sobrecarga 2 aceita os seguintes elementos.

Elementos de data

Elemento

Descrição

%Y / yyyy / YYYY

Ano com século (ex.: 2025).

%y

Ano sem século (00–99). Zero à esquerda opcional.

%m / mm / MM

Mês como número decimal (01–12).

%B

Nome completo do mês (ex.: January).

%b / %h

Nome abreviado do mês (ex.: Jan).

%d / dd / DD

Dia do mês como número decimal (01–31).

%e

Dia do mês sem zero à esquerda (1–31). Por exemplo, 2 em vez de 02.

%F

Equivalente a %Y-%m-%d.

Elementos de hora

Elemento

Descrição

%H / hh / HH

Hora no formato de 24 horas (00–23).

%M / mi / MI

Minuto como número decimal (00–59).

%S / ss / SS

Segundo como número decimal (00–60).

%X

Hora no formato HH:MM:SS.

%T

Equivalente a %H:%M:%S.

ff3

Milissegundos como decimal de três dígitos (000–999). Use %S.ff3 para corresponder a 00.123.

%Ez

Deslocamento numérico de fuso horário (+HH:MM ou -HH:MM).

%E<n>S

Segundos com <n> casas decimais. Por exemplo, %E3S corresponde a 00.123.

%E*S

Segundos com precisão total de 6 dígitos. Por exemplo, 00.123456.

Valores de retorno

Valores de retorno da Sobrecarga 1

Retorna um valor TIMESTAMP_NTZ no fuso horário especificado.

Condição

Resultado

timestamp é NULL ou não é um valor TIMESTAMP

Erro

time_zone é NULL

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

date, format ou time_zone é NULL

NULL

date não corresponde a format ou format é inválido

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

time é NULL

Erro

date_part é NULL

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. Alterar odps.sql.timezone modifica 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_zone na Sobrecarga 2 e a aritmética baseada em época na Sobrecarga 3 independem de odps.sql.timezone.

  • Tratamento de NULL: As Sobrecargas 2 e 3 retornam NULL para entradas NULL, exceto time na Sobrecarga 3, que gera erro. A Sobrecarga 1 gera erro quando timestamp é NULL.

  • Ano ausente na Sobrecarga 2: Se a string format omitir 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.