Aquí hay una lista de unidades que se pueden usar en las funciones de intervalo y fecha y hora de MySQL.
unit Valor | Esperado expr Formato |
---|---|
MICROSECOND | MICROSECONDS |
SECOND | SECONDS |
MINUTE | MINUTES |
HOUR | HOURS |
DAY | DAYS |
WEEK | WEEKS |
MONTH | MONTHS |
QUARTER | QUARTER |
YEAR | YEARS |
SECOND_MICROSECOND | 'SECONDS.MICROSECONDS' |
MINUTE_MICROSECOND | 'MINUTES:SECONDS.MICROSECONDS' |
MINUTE_SECOND | 'MINUTES:SECONDS' |
HOUR_MICROSECOND | 'HOURS:MINUTES:SECONDS.MICROSECONDS' |
HOUR_SECOND | 'HOURS:MINUTES:SECONDS' |
HOUR_MINUTE | 'HOURS:MINUTES' |
DAY_MICROSECOND | 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS' |
DAY_SECOND | 'DAYS HOURS:MINUTES:SECONDS' |
DAY_MINUTE | 'DAYS HOURS:MINUTES' |
DAY_HOUR | 'DAYS HOURS' |
YEAR_MONTH | 'YEARS-MONTHS' |
Estas unidades se pueden usar con +
y -
operadores al realizar operaciones aritméticas en fechas, con funciones como ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
y EXTRACT()
.
También se pueden utilizar en el ON SCHEDULE
cláusula del CREATE_EVENT()
y ALTER_EVENT()
funciones.
Las primeras nueve unidades se pueden usar con TIMESTAMPADD()
y TIMESTAMPDIFF()
(estas dos funciones no son compatibles con las unidades compuestas en el momento de escribir este artículo).
Las unidades que contienen un guión bajo son unidades compuestas. Estos consisten en más de una unidad de tiempo base. Se pueden considerar como una forma abreviada de especificar varias unidades de una sola vez. Cada unidad puede estar separada por cualquier carácter de puntuación.
Ejemplos
Este es un ejemplo de cómo agregar un año a una expresión de fecha y hora:
SELECT '2035-01-01 01:30:45' + INTERVAL 1 YEAR;
Resultado:
2036-01-01 01:30:45
En este caso usamos el +
operador para realizar la suma.
Funciones de fecha y hora
Las unidades de fecha y hora se pueden utilizar con varias funciones de fecha.
Aquí está con el DATE_ADD()
función:
SELECT DATE_ADD('2035-01-01 01:30:45', INTERVAL 1 YEAR);
Resultado:
2036-01-01 01:30:45
Unidades compuestas
Aquí hay un ejemplo que usa unidades compuestas:
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1:30:25' DAY_MINUTE) AS "DAY_MINUTE";
Resultado:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+
Los números enteros pueden estar separados por cualquier carácter de puntuación. Por lo tanto, podríamos reemplazar los dos puntos con puntos para obtener el mismo resultado:
SELECT
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.25.35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2035-01-01 01:00:00', INTERVAL '1.30.25' DAY_MINUTE) AS "DAY_MINUTE";
Resultado:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2036-03-01 01:00:00 | 2035-01-01 02:25:35 | 2035-01-03 07:25:00 | +---------------------+---------------------+---------------------+