Todos os produtos
Search
Central de documentação

MaxCompute:TIME_DIFF

Última atualização: Sep 24, 2026

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: HOUR ou hh.

    • Minuto: MINUTE ou mi.

    • Segundo: SECOND ou ss.

    • Milissegundo: MILLIS ou ff3.

    • Microssegundo: MICROS ou ff6.

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.