sql >> Base de Datos >  >> RDS >> Mysql

SUBDATE() Ejemplos – MySQL

En MySQL, puede usar SUBDATE() función para restar una cantidad específica de tiempo de una fecha. Por ejemplo, podría usarlo para restar 10 días a una fecha determinada. Puede especificar si desea restar días, semanas, meses, trimestres, años, etc. También puede restar un valor de tiempo, como segundos, microsegundos, etc.

Al usar la primera sintaxis que se muestra a continuación, SUBDATE() función es un sinónimo de DATE_SUB() función (similar a cómo ADDDATE() es un sinónimo de DATE_ADD() cuando se usa la misma sintaxis).

Sintaxis

Puede utilizar esta función de las dos formas siguientes:

SUBDATE(date,INTERVAL expr unit)

O

SUBDATE(expr,days)

Ejemplo 1:la primera sintaxis

Este es un ejemplo del uso de la primera forma de la sintaxis.

SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;

Resultado:

+------------+
| Result     |
+------------+
| 2018-05-08 |
+------------+

Este ejemplo resta 2 días a la fecha proporcionada por el primer argumento.

Ejemplo 2:la segunda sintaxis

Este ejemplo podría reescribirse como sigue:

SELECT SUBDATE('2018-05-10', 2) AS Result;

Resultado:

+------------+
| Result     |
+------------+
| 2018-05-08 |
+------------+

Esto usa la segunda forma de la sintaxis. El segundo argumento es un número entero que representa cuántos días se deben restar de la fecha proporcionada por el primer argumento.

Como se mencionó, SUBDATE() es un sinónimo de DATE_SUB() , pero solo cuando se utiliza la primera sintaxis. La segunda sintaxis solo está disponible en SUBDATE() .

Ejemplo 3:otras unidades de fecha

Una ventaja de la primera forma de la sintaxis es que puede especificar si desea restar días, semanas, meses, años, etc. Estos son algunos ejemplos.

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 |
+------------+------------+------------+-------------+------------+

Ejemplo 4:Unidades de tiempo

También puede usar SUBDATE() para restar unidades de tiempo de un valor de fecha/hora. He aquí un ejemplo.

SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;

Resultado:

+---------------------+
| Result              |
+---------------------+
| 2018-05-09 23:00:00 |
+---------------------+

Valores esperados

La siguiente tabla muestra los valores unitarios válidos y su formato esperado.

unit Valor Esperado expr Formato
MICROSEGUNDO MICROSEGUNDOS
SEGUNDO SEGUNDOS
MINUTO MINUTOS
HORA HORAS
DÍA DÍAS
SEMANA SEMANAS
MES MESES
TRIMESTRE TRIMESTRE
AÑO AÑOS
SEGUNDO_MICROSEGUNDO ‘SEGUNDOS.MICROSEGUNDOS’
MINUTO_MICROSEGUNDO ‘MINUTOS:SEGUNDOS.MICROSEGUNDOS’
MINUTO_SEGUNDO 'MINUTOS:SEGUNDOS'
HORA_MICROSEGUNDO ‘HORAS:MINUTOS:SEGUNDOS.MICROSEGUNDOS’
HORA_SEGUNDO ‘HORAS:MINUTOS:SEGUNDOS’
HORA_MINUTO ‘HORAS:MINUTOS’
DÍA_MICROSEGUNDO ‘DÍAS HORAS:MINUTOS:SEGUNDOS.MICROSEGUNDOS’
DÍA_SEGUNDO ‘DÍAS HORAS:MINUTOS:SEGUNDOS’
DÍA_MINUTO ‘DÍAS HORAS:MINUTOS’
DÍA_HORA ‘DÍAS HORAS’
AÑO_MES 'AÑOS-MESES'