Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Exemplos de DATE_SUB() – MySQL


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.