MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Unidades de data e hora compostas MariaDB explicadas


O MariaDB inclui várias unidades de data e hora que você pode usar ao trabalhar com valores de data e hora. Por exemplo, MONTH é uma unidade e HOUR é outra unidade.

Algumas unidades são unidades compostas. Unidades compostas são quando duas unidades são combinadas em uma. A convenção de nomenclatura é que cada nome de unidade é separado por um sublinhado. Por exemplo, MINUTE_SECOND é para minutos e segundos.

Abaixo estão alguns exemplos que demonstram como as unidades compostas funcionam no MariaDB.

Lista de unidades compostas


Primeiro, aqui está uma lista das unidades compostas disponíveis no MariaDB:
Unidade Descrição
SECOND_MICROSECOND Segundos.Microssegundos
MINUTE_MICROSECOND Minutos.Segundos.Microsegundos
MINUTE_SECOND Minutos.Segundos
HOUR_MICROSECOND Horas.Minutos.Segundos.Microssegundos
HOUR_SECOND Horas.Minutos.Segundos
HOUR_MINUTE Horas.Minutos
DAY_MICROSECOND Dias Horas.Minutos.Segundos.Microssegundos
DAY_SECOND Dias Horas.Minutos.Segundos
DAY_MINUTE Dias Horas.Minutos
DAY_HOUR Dias Horas
YEAR_MONTH Anos-Meses

Basta olhar para os seus nomes para dar uma boa pista sobre o que eles fazem.

Unidades compostas (como qualquer unidade de data/hora) podem ser usadas ao extrair partes de um valor de data/hora e também ao fazer coisas como adicionar e subtrair um intervalo de tempo a um valor de data/hora.

Estes podem ser usados ​​com o + e - operadores ao realizar aritmética em datas, com funções como ADDDATE() , SUBDATE() , DATE_ADD() , DATE_SUB() , EXTRACT() , TIMESTAMPADD() e TIMESTAMPDIFF() .

Eles também podem ser usados ​​no ON SCHEDULE cláusula do CREATE_EVENT() e ALTER_EVENT() funções.

Exemplo - Extraindo Unidades Compostas


As unidades de data e hora podem ser usadas com várias funções diferentes e em vários outros contextos. Uma das funções que aceitam essas unidades é a EXTRACT() função. Esta função retorna uma unidade de data/hora especificada de um determinado valor de data ou data/hora.

Aqui está um exemplo de como usar uma unidade composta para extrair o ano e o mês de uma data:
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');

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

Podemos ver que o ano e o mês são retornados como um valor.

Exemplo - Adicionando/Subtraindo Unidades Compostas


Unidades compostas também podem ser usadas para adicionar e subtrair intervalos de data e hora.

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

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

Neste caso, há duas partes a serem observadas em relação à unidade composta.

Como no exemplo anterior, usamos uma unidade composta (neste caso DAY_HOUR ). Com relação ao intervalo real a ser adicionado, usamos dois pontos para separar cada lado da unidade composta.

Neste caso, especificamos '2:08' , que adicionou 2 dias e 8 horas ao valor da data. A data original não tem uma parte de hora e, portanto, supõe-se que a hora inicial seja 00:00:00 .

MariaDB é razoavelmente tolerante com o rigor do formato. Podemos obter o mesmo efeito usando diferentes separadores e também omitindo o zero à esquerda.

Aqui está outro exemplo que usa o DATE_ADD() função com vários intervalos de tempo:
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                             |
+-------------------------------------------------+

Aqui estão mais alguns exemplos de várias unidades compostas:
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 |
+---------------------+---------------------+---------------------+