Referencia de funciones

DATE_SUB

Resta un intervalo de tiempo a una fecha.

MySQL 8.4
DATE_SUB(date, INTERVAL expr unit)
date
Fecha o fecha y hora de origen
DATE
INTERVAL expr unit
Intervalo que se resta, por ejemplo INTERVAL 1 MONTH
expr
Cuántas unidades se restan
unit
Unidad del intervalo
Palabra clave
MICROSECONDSECONDMINUTEHOURDAYWEEKMONTHQUARTERYEARSECOND_MICROSECONDMINUTE_MICROSECONDMINUTE_SECONDHOUR_MICROSECONDHOUR_SECONDHOUR_MINUTEDAY_MICROSECONDDAY_SECONDDAY_MINUTEDAY_HOURYEAR_MONTH

Valor devuelto

Fecha si a una fecha se restan días o unidades mayores; si no, fecha y hora; si el día no existe en el mes, se usa el último día del mes

Ejemplos

Diez días antes del cumpleaños

MySQL 8.4
SELECT member_name,
	birthday,
	DATE_SUB(birthday, INTERVAL 10 DAY) AS reminder_date
FROM FamilyMembers;
member_namebirthdayreminder_date
Headley Quincey1960-05-131960-05-03
Flavia Quincey1963-02-161963-02-06
Andie Quincey1983-06-051983-05-26
Lela Quincey1985-06-071985-05-28
Annie Quincey1988-04-101988-03-31
Ernest Forrest1961-09-111961-09-01
Constance Forrest1968-09-061968-08-27
Wednesday Addams2005-01-132005-01-03

Un mes antes del 31 de marzo

MySQL 8.4
SELECT DATE_SUB('2024-03-31', INTERVAL 1 MONTH) AS new_date;
new_date
2024-02-29

Unidad de intervalo compuesta

MySQL 8.4
SELECT DATE_SUB('2022-06-16', INTERVAL '1 12' DAY_HOUR) AS new_date;
new_date
2022-06-14 12:00:00

Detalles

En lugar de la función, puedes sumar o restar un intervalo con un operador: date + INTERVAL 7 DAY. En PostgreSQL esta función no existe: la fecha se desplaza con el mismo operador, pero el intervalo se escribe como cadena: date + INTERVAL '7 days'.

Unidad compuestaFormato de la cadena exprEjemplo
SECOND_MICROSECONDsegundos.microsegundos'10.000500'
MINUTE_MICROSECONDminutos:segundos.microsegundos'5:10.000500'
MINUTE_SECONDminutos:segundos'5:10'
HOUR_MICROSECONDhoras:minutos:segundos.microsegundos'2:05:10.000500'
HOUR_SECONDhoras:minutos:segundos'2:05:10'
HOUR_MINUTEhoras:minutos'1:30'
DAY_MICROSECONDdías horas:minutos:segundos.microsegundos'1 2:05:10.000500'
DAY_SECONDdías horas:minutos:segundos'1 2:05:10'
DAY_MINUTEdías horas:minutos'1 2:05'
DAY_HOURdías horas'1 12'
YEAR_MONTHaños-meses'1-6'

Véase también