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

Ejemplos de DATE_SUB() – MySQL

En MySQL, puede usar DATE_SUB() función para restar una cantidad específica de tiempo de una fecha. Por ejemplo, puede usarlo para restar 7 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.

Esta función es similar a DATE_ADD() , excepto que resta de una fecha en lugar de agregarle.

Sintaxis

La sintaxis es así:

DATE_SUB(date,INTERVAL expr unit)

Ejemplo 1:uso básico

Aquí hay un ejemplo de uso.

SELECT DATE_SUB('2021-05-07', INTERVAL 5 DAY) AS Result;

Resultado:

+------------+
| Result     |
+------------+
| 2021-05-02 |
+------------+

Este ejemplo resta 5 días a partir de la fecha proporcionada por el primer argumento.

Ejemplo 2:otras unidades de fecha

Puede especificar las unidades en días, semanas, meses, años, etc. Aquí hay algunos ejemplos.

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

Ejemplo 3:Unidades de tiempo

También puede restar unidades de tiempo de un valor de fecha/hora. He aquí un ejemplo.

SELECT DATE_SUB('2021-05-07 10:00:00', INTERVAL 5 HOUR) AS Result;

Resultado:

+---------------------+
| Result              |
+---------------------+
| 2021-05-07 05:00:00 |
+---------------------+

Y puede especificar varias unidades al mismo tiempo. Por ejemplo, puede especificar horas y minutos. Así.

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

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'

También puede usar SUBDATE() para hacer lo mismo (es un sinónimo de DATE_SUB() función cuando se usa la misma sintaxis).

Además, la sintaxis de SUBDATE() tiene una segunda forma, que es un método abreviado de restar un cierto número de días de una fecha. Para obtener más información, consulte Ejemplos de SUBDATE() en MySQL.