Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Databricks SQL
Databricks Runtime
Devolve a subtração de expr2 de expr1.
Sintaxe
expr1 - expr2
Argumentos
-
expr1: Uma expressão numérica, DATE, TIMESTAMP ou INTERVAL. -
expr2: O tipo aceite depende do tipo deexpr:- Se
expr1é um numéricoexpr2deve ser expressão numérica - Se
expr1for um intervalo de um ano-mês ou dia-tempo,expr2deve ser da classe correspondente de intervalo. - Caso contrário
expr2, deve ser um carimbo de data ou hora.
- Se
Devoluções
O tipo de resultado é determinado pela seguinte ordem:
- Se
expr1for numérico, o resultado é o tipo máximo comum dos argumentos. - Se
expr1é uma DATA eexpr2é um intervalo de tempo de dia o resultado é um carimbo de data/hora. - Se
expr1for um TIMESTAMP eexpr2for um intervalo, o resultado será um TIMESTAMP. - Se
expr1eexpr2são DATEs, o resultado é umINTERVAL DAYS. - Se
expr1ouexpr2são TIMESTAMP o resultado é umINTERVAL DAY TO SECONDarquivo . - Se
expr1eexpr2são intervalos ano-mês, o resultado é um intervalo ano-mês de unidades suficientemente amplas para representar o resultado. - Se
expr1eexpr2são intervalos de tempo do dia, o resultado é um intervalo de tempo do dia de unidades suficientemente amplas para representar o resultado. - Caso contrário, o tipo de resultado corresponde a
expr1.
Se ambas as expressões forem intervaladas, devem ser da mesma classe.
Quando você subtrai um intervalo de um ano e mês de um DATE, o Databricks SQL garante que a data resultante esteja bem formada.
Se o resultado estourar o tipo de resultado, o Databricks SQL gerará um erro ARITHMETIC_OVERFLOW .
Use try_subtract para retornar NULL em caso de estouro.
Aviso
No Databricks Runtime, se spark.sql.ansi.enabled for false, um estouro não causará um erro, mas "encapsulará" o resultado.
Exemplos
> SELECT 2 - 1;
1
> SELECT DATE'2021-03-20' - INTERVAL '2' MONTH
2021-1-20
> SELECT TIMESTAMP'2021-03-20 12:15:29' - INTERVAL '3' SECOND
2021-03-20 12:15:26
> SELECT typeof(INTERVAL '3' DAY - INTERVAL '2' HOUR);
interval day to hour
> SELECT typeof(current_date - (current_date + INTERVAL '1' DAY));
interval day
> SELECT typeof(current_timestamp - (current_date + INTERVAL '1' DAY));
interval day to second
> SELECT DATE'2021-03-31' - INTERVAL '1' MONTH;
2021-02-28
> SELECT -100Y - 100Y;
Error: ARITHMETIC_OVERFLOW