sql >> Base de Datos >  >> RDS >> MariaDB

Explicación de las unidades de fecha y hora compuestas de MariaDB

MariaDB incluye un montón de unidades de fecha y hora que puede usar cuando trabaja con valores de fecha y hora. Por ejemplo, MONTH es una unidad, y HOUR es otra unidad.

Algunas unidades son unidades compuestas. Las unidades compuestas son cuando dos unidades se combinan en una. La convención de nomenclatura es que cada nombre de unidad está separado por un guión bajo. Por ejemplo, MINUTE_SECOND es para minutos y segundos.

A continuación se muestran algunos ejemplos que demuestran cómo funcionan las unidades compuestas en MariaDB.

Lista de Unidades Compuestas

Primero, aquí hay una lista de las unidades compuestas disponibles en MariaDB:

Unidad Descripción
SECOND_MICROSECOND Segundos.Microsegundos
MINUTE_MICROSECOND Minutos.Segundos.Microsegundos
MINUTE_SECOND Minutos.Segundos
HOUR_MICROSECOND Horas.Minutos.Segundos.Microsegundos
HOUR_SECOND Horas.Minutos.Segundos
HOUR_MINUTE Horas.Minutos
DAY_MICROSECOND Días Horas.Minutos.Segundos.Microsegundos
DAY_SECOND Días Horas.Minutos.Segundos
DAY_MINUTE Días Horas.Minutos
DAY_HOUR Días Horas
YEAR_MONTH Años-Meses

Solo mirar sus nombres proporciona una pista bastante buena de lo que hacen.

Las unidades compuestas (como con cualquier unidad de fecha/hora) se pueden usar al extraer partes de un valor de fecha/hora, y también al hacer cosas como sumar y restar un intervalo de tiempo a un valor de fecha/hora.

Estos se pueden usar con + y - operadores al realizar operaciones aritméticas en fechas, con funciones como ADDDATE() , SUBDATE() , DATE_ADD() , DATE_SUB() , EXTRACT() , TIMESTAMPADD() y TIMESTAMPDIFF() .

También se pueden utilizar en el ON SCHEDULE cláusula del CREATE_EVENT() y ALTER_EVENT() funciones.

Ejemplo:extracción de unidades compuestas

Las unidades de fecha y hora se pueden usar con un montón de funciones diferentes y en varios otros contextos. Una de las funciones que aceptan estas unidades es EXTRACT() función. Esta función devuelve una unidad de fecha/hora específica a partir de una fecha o un valor de fecha y hora determinados.

Este es un ejemplo del uso de una unidad compuesta para extraer el año y el mes de una fecha:

SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');

Resultado:

+---------------------------------------+
| EXTRACT(YEAR_MONTH FROM '2030-12-25') |
+---------------------------------------+
|                                203012 |
+---------------------------------------+

Podemos ver que el año y el mes se devuelven como un solo valor.

Ejemplo:sumar/restar unidades compuestas

Las unidades compuestas también se pueden usar para sumar y restar intervalos de fecha y hora.

Ejemplo:

SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;

Resultado:

+-----------------------------------------+
| '2030-12-25' + INTERVAL '2:08' DAY_HOUR |
+-----------------------------------------+
| 2030-12-27 08:00:00                     |
+-----------------------------------------+

En este caso, hay dos partes a tener en cuenta con respecto a la unidad compuesta.

Como en el ejemplo anterior, usamos una unidad compuesta (en este caso DAY_HOUR ). Con respecto al intervalo real para agregar, usamos dos puntos para separar cada lado de la unidad compuesta.

En este caso especificamos '2:08' , que agregó 2 días y 8 horas al valor de la fecha. La fecha original no tiene una parte de la hora, por lo que se supone que la hora inicial es 00:00:00 .

MariaDB es razonablemente indulgente con la rigurosidad del formato. Podemos obtener el mismo efecto usando diferentes separadores y también omitiendo el cero inicial.

Aquí hay otro ejemplo que usa el DATE_ADD() función con varios intervalos de tiempo:

SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);

Resultado:

+-------------------------------------------------+
| DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) |
+-------------------------------------------------+
| 2030-12-27 08:00:00                             |
+-------------------------------------------------+

Aquí hay algunos ejemplos más de varias unidades compuestas:

SELECT 
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";

Resultado:

+---------------------+---------------------+---------------------+
| YEAR_MONTH          | HOUR_SECOND         | DAY_MINUTE          |
+---------------------+---------------------+---------------------+
| 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 |
+---------------------+---------------------+---------------------+