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

Unidades de fecha y hora en MySQL (lista completa)

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