Todos os produtos
Search
Central de documentação

MaxCompute:TIME_TRUNC

Última atualização: Jun 26, 2026

Trunca um valor de tempo para a granularidade especificada e retorna o resultado como BIGINT em microssegundos.

Diferentemente das funções de extração, que retornam um componente numérico (como o número da hora), o truncamento devolve o mesmo tipo de valor com os campos de menor precisão zerados. Por exemplo, ao truncar 15:31:38.776 para a hora, o resultado é o equivalente BIGINT de 15:00:00, e não o número 15.

Sintaxe

BIGINT TIME_TRUNC(BIGINT <time>, STRING <date_part>)

Exemplo

-- Returns 1234567890.
SELECT TIME_TRUNC(1234567890L, 'ff6');

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

time

BIGINT

Sim

Valor de tempo em microssegundos. Use TO_TIME para construir esse valor. Na versão do tipo de dados do MaxCompute 1.0, valores STRING e DOUBLE são convertidos implicitamente para BIGINT.

date_part

STRING

Sim

Granularidade alvo do truncamento. Deve ser uma constante STRING. Consulte a tabela abaixo para verificar os valores válidos.

Valores válidos para date_part

Valor

Alias

Descrição

MICROSECOND

MICROS, ff6

Sem truncamento — microssegundo é a menor unidade.

MILLISECOND

MILLIS, ff3

Trunca para o milissegundo mais próximo. Por exemplo, 15:30:00.123456 torna-se 15:30:00.123.

SECOND

SS

Trunca para o segundo mais próximo.

MINUTE

MI

Trunca para o minuto mais próximo.

HOUR

HH

Trunca para a hora mais próxima.

Valor retornado

Retorna um valor BIGINT em microssegundos.

Condição

Resultado

time não é BIGINT

Erro

date_part não é constante, está em formato não suportado ou possui tipo diferente de STRING

Erro

time ou date_part é NULL

NULL

Exemplos

Truncamento em diferentes granularidades

Os exemplos a seguir usam o mesmo tempo de entrada 15:31:38.776 para demonstrar o efeito de cada granularidade.

-- Input: 15:31:38.776

-- Truncate to the hour. Returns 15:00:00.
SELECT FORMAT_TIME(
  TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'HOUR'),
  '%H:%M:%S'
) AS truncated_hour;

-- Truncate to the minute. Returns 15:31:00.
SELECT FORMAT_TIME(
  TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'MINUTE'),
  '%H:%M:%S'
) AS truncated_minute;

-- Truncate to the second. Returns 15:31:38.
SELECT FORMAT_TIME(
  TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'SECOND'),
  '%H:%M:%S'
) AS truncated_second;

Truncamento de valor bruto em microssegundos

-- Truncate to microsecond (ff6) — no change. Returns 1234567890.
SELECT TIME_TRUNC(1234567890, 'ff6');

-- Truncate to millisecond (ff3). Returns 1234567000.
SELECT TIME_TRUNC(1234567890, 'ff3');

Tratamento de entradas NULL

-- Returns NULL when time is NULL.
SELECT TIME_TRUNC(NULL, 'SECOND');

-- Returns NULL when date_part is NULL.
SELECT TIME_TRUNC(TO_TIME(12, 00, 00), NULL);

Funções relacionadas

TIME_TRUNC é uma função de tempo. Para outras funções que calculam ou transformam valores de tempo, consulte Funções de data e hora.