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