Todos os produtos
Search
Central de documentação

MaxCompute:TIME_SUB

Última atualização: Sep 24, 2026

A função TIME_SUB subtrai um intervalo especificado delta de um valor de tempo time, usando a unidade de tempo date_part.

Sintaxe

BIGINT TIME_SUB(BIGINT <time>, BIGINT <delta>, STRING <date_part>)

-- A standard example.
-- Returns 1233995.
SELECT TIME_SUB(1234000, 5, 'MICROS');

Parâmetros

  • time: Obrigatório. Um valor de tempo em microssegundos. O valor deve ser do tipo BIGINT. Use a função TO_TIME para construir esse valor.

    No MaxCompute V1.0 data type edition, se este parâmetro for do tipo STRING ou DOUBLE, ele é convertido implicitamente para o tipo BIGINT durante o cálculo.

  • delta: Obrigatório. O intervalo a ser subtraído. Este parâmetro é do tipo BIGINT. Se delta for maior que 0, o intervalo é subtraído; caso contrário, é somado.

    No MaxCompute V1.0 data type edition, se este parâmetro for do tipo STRING ou DOUBLE, ele é convertido implicitamente para o tipo BIGINT durante o cálculo.

  • date_part: Obrigatório. A unidade de tempo do intervalo. Este parâmetro é uma constante do tipo STRING. Valores válidos:

    • 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. O valor de tempo é expresso em microssegundos. As seguintes regras se aplicam:

  • Se o parâmetro time não for do tipo BIGINT, a função retorna um erro.

  • Se o parâmetro date_part não for uma constante, estiver em formato não suportado ou for de outro tipo de dado, a função retorna um erro.

  • Se time, delta ou date_part for nulo, a função retorna NULL.

Exemplos

  • Exemplo 1: Subtrair um intervalo em microssegundos ('ff6').

    -- Returns 1233995.
    SELECT TIME_SUB(1234000, 5, 'ff6');
  • Exemplo 2: Subtrair um intervalo em horas ('hour').

    -- Returns 38380000000.
    SELECT TIME_SUB(TO_TIME('15:39:40','%H:%M:%S'), 5, 'hour');
  • Exemplo 3: Subtrair um intervalo em milissegundos ('millis').

    -- Enable the MaxCompute V2.0 data type edition.
    SET odps.sql.type.system.odps2 = true;
    
    -- Returns 56379995000.
    SELECT TIME_SUB(TO_TIME(TIMESTAMP '2025-03-27 15:39:40'), 5, 'millis');
  • Exemplo 4: Use a função FORMAT_TIME para converter o valor de tempo BIGINT retornado em um valor STRING no formato especificado.

    -- Returns 15:39:45.
    SELECT FORMAT_TIME(TIME_SUB(TO_TIME(15,39,40), -5, 'second'),'%H:%M:%S');
    
    -- Set the data type edition to 2.0.
    SET odps.sql.type.system.odps2 = true;
    -- Returns 15:44:40.123.
    SELECT FORMAT_TIME(TIME_SUB(TO_TIME(TIMESTAMP_NTZ '2025-03-27 15:39:40.123456'),-5,'minute'),'%H:%M:%S.ff3');
  • Exemplo 5: Tratar entradas NULL.

    -- If any parameter is NULL, NULL is returned.
    -- Returns NULL.
    SELECT TIME_SUB(NULL, 10, 'SECOND');
    
    -- Returns NULL.
    SELECT TIME_SUB(1234000, NULL, 'ff6');
    
    -- Returns NULL.
    SELECT TIME_SUB(1234000, 5, NULL);

Funções relacionadas

Use a função FORMAT_TIME para converter o valor de tempo BIGINT retornado pela função TIME_SUB em um valor STRING no formato especificado.

TIME_SUB é uma função de tempo. Para mais informações sobre funções de cálculo e conversão de tempo, consulte Date and time functions.