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 |
|
|
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. |
|
|
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 |
|
|
|
Sem truncamento — microssegundo é a menor unidade. |
|
|
|
Trunca para o milissegundo mais próximo. Por exemplo, |
|
|
|
Trunca para o segundo mais próximo. |
|
|
|
Trunca para o minuto mais próximo. |
|
|
|
Trunca para a hora mais próxima. |
Valor retornado
Retorna um valor BIGINT em microssegundos.
|
Condição |
Resultado |
|
|
Erro |
|
|
Erro |
|
|
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.