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

Exemplos de SUBDATE() – MySQL


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'