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:
HOURouhh.Minuto:
MINUTEoumi.Segundo:
SECONDouss.Milissegundo:
MILLISouff3.Microssegundo:
MICROSouff6.
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.