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