No MySQL, você pode usar a função DATE_SUB()
para subtrair uma quantidade de tempo especificada de uma data. Por exemplo, você pode utilizá-la para subtrair 7 dias de uma determinada data. Você pode especificar se deve subtrair dias, semanas, meses, trimestres, anos, etc. Você também pode subtrair um valor de tempo, como segundos, microssegundos, etc.
Esta função é similar a DATE_ADD()
, exceto que ela subtrai de uma data ao invés de adicionar a ela.
Sintaxe
A sintaxe é assim:
DATE_SUB(date,INTERVAL expr unit)
Exemplo 1 – Uso Básico
Aqui está um exemplo de uso.
SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;
Resultado:
+------------+| Result |+------------+| 2021-05-02 |+------------+
Este exemplo subtrai 5 dias da data fornecida pelo primeiro argumento.
Exemplo 2 – Outras Unidades de Data
Pode especificar as unidades em dias, semanas, meses, anos, etc. Aqui estão alguns exemplos.
SELECT '2021-05-07' AS 'Start Date', DATE_SUB('2021-05-07', INTERVAL 2 WEEK) AS '-2 Weeks', DATE_SUB('2021-05-07', INTERVAL 2 MONTH) AS '-2 Months', DATE_SUB('2021-05-07', INTERVAL 2 QUARTER) AS '-2 Quarters', DATE_SUB('2021-05-07', INTERVAL 2 YEAR) AS '-2 Years';
Resultado:
+------------+------------+------------+-------------+------------+| Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years |+------------+------------+------------+-------------+------------+| 2021-05-07 | 2021-04-23 | 2021-03-07 | 2020-11-07 | 2019-05-07 |+------------+------------+------------+-------------+------------+
Exemplo 3 – Unidades de Tempo
Você também pode subtrair unidades de tempo de um valor de data/hora. Aqui está um exemplo.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;
Resultado:
+---------------------+| Result |+---------------------+| 2021-05-07 05:00:00 |+---------------------+
E você pode especificar várias unidades ao mesmo tempo. Por exemplo, você pode especificar horas e minutos. Assim.
SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL '1:30' HOUR_MINUTE) AS Result;
Resultado:
+---------------------+| Result |+---------------------+| 2021-05-07 08:30:00 |+---------------------+
Valores esperados
A tabela seguinte mostra os valores unitários válidos e o seu formato esperado.
unit Valor |
Expectado expr Formato |
---|---|
MICROSECOND | MICROSECONDS |
SEGUNDO | SEGUNDOS |
MINUTO | MINUTOS |
HORA | HORA |
DIA | DIAS |
SEMANA | SEMANAS |
MÊS | MESES |
QUARTO | QUARTO |
ANO | ANOS |
SEGUNDO_MICROSSEGUNDO | ‘SEGUNDOS.MICROSSEGUNDOS’ |
MINUTO_MICROSSEGUNDO | ‘MINUTOS:SEGUNDOS.MICROSSEGUNDOS’ |
MINUTO_SEGUNDO | ‘MINUTOS:SEGUNDOS’ |
HORA_MICROSSEGUNDO | ‘HORAS:MINUTOS:SEGUNDOS.MICROSSEGUNDOS’ |
HORA_SEGUNDO | ‘HORAS:MINUTOS:SEGUNDOS’ |
HORA_MINUTO | ‘HORAS:MINUTOS:MINUTOS’ |
DIA_MICROSSEGUNDO | ‘DIAS HORAS:MINUTOS:SEGUNDOS.MICROSSEGUNDOS’ |
DIA_SEGUNDO | ‘DIAS HORAS:MINUTOS:SEGUNDOS’ |
DIA_MINUTO | ‘DIAS HORAS:MINUTOS’ |
DIA_HORA | ‘DIAS HORAS’ |
ANO_MÊS | ‘ANOS-MONTHS’ |
Você também pode usar a função SUBDATE()
para fazer a mesma coisa (é um sinônimo para a função DATE_SUB()
quando se usa a mesma sintaxe).
Além disso, a sintaxe de SUBDATE()
tem uma segunda forma, que é um método de subtrair um certo número de dias a partir de uma data. Para mais informações, veja SUBDATE() Exemplos em MySQL.