No MySQL, você pode usar o
SUBDATE()
função para subtrair um determinado período de tempo de uma data. Por exemplo, você pode usá-lo para subtrair 10 dias de uma determinada data. Você pode especificar se deseja subtrair dias, semanas, meses, trimestres, anos, etc. Você também pode subtrair um valor de tempo, como segundos, microssegundos, etc. Ao usar a primeira sintaxe listada abaixo, o
SUBDATE()
função é um sinônimo para o DATE_SUB()
função (semelhante a como ADDDATE()
é um sinônimo para DATE_ADD()
ao usar a mesma sintaxe). Sintaxe
Você pode usar essa função das duas maneiras a seguir:
SUBDATE(date,INTERVAL expr unit)
Ou
SUBDATE(expr,days)
Exemplo 1 – A primeira sintaxe
Aqui está um exemplo de uso da primeira forma da sintaxe.
SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;
Resultado:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Este exemplo subtrai 2 dias da data fornecida pelo primeiro argumento.
Exemplo 2 – A Segunda Sintaxe
Este exemplo pode ser reescrito da seguinte forma:
SELECT SUBDATE('2018-05-10', 2) AS Result;
Resultado:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Isso usa a segunda forma da sintaxe. O segundo argumento é um número inteiro que representa quantos dias devem ser subtraídos da data fornecida pelo primeiro argumento.
Conforme mencionado,
SUBDATE()
é um sinônimo para DATE_SUB()
, mas apenas quando a primeira sintaxe estiver sendo usada. A segunda sintaxe só está disponível em SUBDATE()
. Exemplo 3 - Outras Unidades de Data
Um benefício da primeira forma da sintaxe é que você pode especificar se deseja subtrair dias, semanas, meses, anos, etc. Aqui estão alguns exemplos.
SELECT '2018-05-10' AS 'Start Date', SUBDATE('2018-05-10', INTERVAL 2 WEEK) AS '-2 Weeks', SUBDATE('2018-05-10', INTERVAL 2 MONTH) AS '-2 Months', SUBDATE('2018-05-10', INTERVAL 2 QUARTER) AS '-2 Quarters', SUBDATE('2018-05-10', INTERVAL 2 YEAR) AS '-2 Years';
Resultado:
+------------+------------+------------+-------------+------------+ | Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years | +------------+------------+------------+-------------+------------+ | 2018-05-10 | 2018-04-26 | 2018-03-10 | 2017-11-10 | 2016-05-10 | +------------+------------+------------+-------------+------------+
Exemplo 4 – Unidades de tempo
Você também pode usar
SUBDATE()
para subtrair unidades de tempo de um valor de data/hora. Aqui está um exemplo. SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;
Resultado:
+---------------------+ | Result | +---------------------+ | 2018-05-09 23:00:00 | +---------------------+
Valores esperados
A tabela a seguir mostra os valores de unidade válidos e seu formato esperado.
unit Valor | Esperado expr Formato |
---|---|
MICROSSEGUNDO | MICROSSEGUNDOS |
SEGUNDA | SEGUNDOS |
MINUTO | MINUTOS |
HORA | HORÁRIOS |
DIA | DIAS |
SEMANA | SEMANAS |
MÊS | MESES |
QUARTO | QUARTOS |
ANO | ANOS |
SECOND_MICROSECOND | 'SEGUNDOS.MICROSSEGUNDOS' |
MINUTE_MICROSECOND | 'MINUTOS:SEGUNDOS.MICROSSEGUNDOS' |
MINUTE_SECOND | 'MINUTOS:SEGUNDOS' |
HOUR_MICROSECOND | 'HORAS:MINUTOS:SEGUNDOS.MICROSSEGUNDOS' |
HOUR_SECOND | 'HORAS:MINUTOS:SEGUNDOS' |
HOUR_MINUTE | 'HORAS:MINUTOS' |
DAY_MICROSECOND | 'DIAS HORAS:MINUTOS:SEGUNDOS.MICROSSEGUNDOS' |
DAY_SECOND | 'DIAS HORAS:MINUTOS:SEGUNDOS' |
DAY_MINUTE | 'DIAS HORAS:MINUTOS' |
DAY_HOUR | 'DIAS HORAS' |
YEAR_MONTH | 'ANOS-MESES' |