No MySQL, você pode usar o
DATE_SUB()
função para subtrair um determinado período de tempo de uma data. Por exemplo, você pode usá-lo para subtrair 7 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. Esta função é semelhante a
DATE_ADD()
, exceto que ele subtrai de uma data em vez de adicionar a ela. Sintaxe
A sintaxe fica 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
Você 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 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' |
Você também pode usar o comando
SUBDATE()
função para fazer a mesma coisa (é um sinônimo para o DATE_SUB()
função ao usar a mesma sintaxe). Além disso, a sintaxe de
SUBDATE()
tem uma segunda forma, que é um método abreviado de subtrair um certo número de dias de uma data. Para obter mais informações, consulte Exemplos de SUBDATE() no MySQL.