A função TIME_DIFF calcula a diferença entre end_time e start_time e retorna o resultado na unidade de tempo especificada por date_part.
Sintaxe
BIGINT TIME_DIFF(BIGINT <end_time>, BIGINT <start_time>, STRING <date_part>)
-- A standard example.
-- Returns 1106600.
SELECT TIME_DIFF(1230000, 123400, 'ff6');
Parâmetros
-
end_time, start_time**: Obrigatórios. Valores BIGINT que representam o tempo em microssegundos. Use a função TO_TIME para construir esses valores.
Na V1.0 data type edition do MaxCompute, se um parâmetro for do tipo STRING ou DOUBLE, o sistema converte implicitamente o parâmetro para o tipo BIGINT durante o cálculo.
-
date_part**: Obrigatório. Uma constante STRING. Especifica a unidade de tempo do valor de retorno. Este parâmetro aceita os seguintes valores:
Hora:
HOURouhh.Minuto:
MINUTEoumi.Segundo:
SECONDouss.Milissegundo:
MILLISouff3.Microssegundo:
MICROSouff6.
Valor de retorno
Retorna um valor BIGINT. Aplicam-se as seguintes regras:
Se end_time ou start_time não for do tipo BIGINT, a função retorna um erro. Esse comportamento se aplica ao MaxCompute V2.0. Na V1.0, o sistema converte implicitamente tipos não BIGINT.
Se end_time for menor que start_time, a função retorna um valor negativo.
Se algum argumento for NULL, a função retorna NULL.
Se date_part não for uma constante, estiver em um formato não suportado ou for de outro tipo de dado, a função retorna um erro.
Exemplos
-
Exemplo 1: Calcule a diferença em microssegundos ('ff6') entre dois valores de tempo.
-- Returns 1106600. SELECT TIME_DIFF(1230000, 123400, 'ff6'); -
Exemplo 2: Determine a diferença em milissegundos ('ff3') entre dois valores de tempo criados com a função TO_TIME.
-- Returns -20000. SELECT TIME_DIFF(TO_TIME(15,39,10), TO_TIME(15,39,30), 'ff3'); -
Exemplo 3: Obtenha a diferença em segundos ('second') entre dois valores de tempo.
-- Enable the MaxCompute V2.0 data type edition. SET odps.sql.type.system.odps2 = true; -- Returns 10. SELECT TIME_DIFF( TO_TIME(TIMESTAMP '2025-03-27 15:39:40'), TO_TIME(TIMESTAMP '2025-03-27 15:39:30'), 'second' ); -
Exemplo 4: Calcule a diferença em horas ('hour') entre dois valores de tempo criados com a função TO_TIME.
-- Enable the MaxCompute V2.0 data type edition. SET odps.sql.type.system.odps2 = true; -- The actual difference is about 2 hours and 34 minutes. The value is rounded down to 2. -- Returns 2. SELECT TIME_DIFF(TO_TIME(12,14,10), TO_TIME(09,39,30), 'hour'); -
Exemplo 5: Exemplo com uma entrada NULL.
-- If any parameter is NULL, NULL is returned. -- Returns NULL. SELECT TIME_DIFF(NULL, TO_TIME(12,0,0), 'minute'); -- Returns NULL. SELECT TIME_DIFF(TO_TIME(12,0,0), NULL, 'minute'); -- Returns NULL. SELECT TIME_DIFF(TO_TIME(12,0,0), TO_TIME(12,10,0), NULL);
Funções relacionadas
TIME_DIFF é uma função de data e hora. Para mais informações sobre outras funções de data e hora, consulte Date and time functions.