MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Explication des unités de date et d'heure composites MariaDB

MariaDB inclut un ensemble d'unités de date et d'heure que vous pouvez utiliser lorsque vous travaillez avec des valeurs de date et d'heure. Par exemple, MONTH est une unité, et HOUR est une autre unité.

Certaines unités sont des unités composites. Les unités composites sont lorsque deux unités sont combinées en une seule. La convention de dénomination est que chaque nom d'unité est séparé par un trait de soulignement. Par exemple, MINUTE_SECOND est pour les minutes et les secondes.

Vous trouverez ci-dessous quelques exemples qui illustrent le fonctionnement des unités composites dans MariaDB.

Liste des unités composites

Tout d'abord, voici une liste des unités composites disponibles dans MariaDB :

Unité Description
SECOND_MICROSECOND Secondes.Microsecondes
MINUTE_MICROSECOND Minutes.Secondes.Microsecondes
MINUTE_SECOND Minutes.Secondes
HOUR_MICROSECOND Heures.Minutes.Secondes.Microsecondes
HOUR_SECOND Heures.Minutes.Secondes
HOUR_MINUTE Heures.Minutes
DAY_MICROSECOND Jours Heures.Minutes.Secondes.Microsecondes
DAY_SECOND Jours Heures.Minutes.Secondes
DAY_MINUTE Jours Heures.Minutes
DAY_HOUR Jours Heures
YEAR_MONTH Années-Mois

Le simple fait de regarder leurs noms fournit un assez bon indice sur ce qu'ils font.

Les unités composites (comme avec n'importe quelle unité de date/heure) peuvent être utilisées lors de l'extraction de parties d'une valeur de date/heure, et également lors d'opérations telles que l'ajout et la soustraction d'un intervalle de temps à une valeur de date/heure.

Ceux-ci peuvent être utilisés avec le + et - opérateurs lors de l'exécution d'arithmétiques sur des dates, avec des fonctions telles que ADDDATE() , SUBDATE() , DATE_ADD() , DATE_SUB() , EXTRACT() , TIMESTAMPADD() , et TIMESTAMPDIFF() .

Ils peuvent également être utilisés dans le ON SCHEDULE clause du CREATE_EVENT() et ALTER_EVENT() fonctions.

Exemple – Extraction d'unités composites

Les unités de date et d'heure peuvent être utilisées avec un tas de fonctions différentes et dans divers autres contextes. L'une des fonctions qui acceptent ces unités est le EXTRACT() une fonction. Cette fonction renvoie une unité de date/heure spécifiée à partir d'une valeur de date ou de date/heure donnée.

Voici un exemple d'utilisation d'une unité composite pour extraire l'année et le mois d'une date :

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

Résultat :

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

Nous pouvons voir que l'année et le mois sont renvoyés sous la forme d'une seule valeur.

Exemple – Ajout/Soustraction d'unités composites

Les unités composites peuvent également être utilisées pour ajouter et soustraire des intervalles de date et d'heure.

Exemple :

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

Résultat :

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

Dans ce cas, il y a deux parties à garder à l'esprit en ce qui concerne l'unité composite.

Comme dans l'exemple précédent, nous avons utilisé une unité composée (dans ce cas DAY_HOUR ). En ce qui concerne l'intervalle réel à ajouter, nous avons utilisé deux points pour séparer chaque côté de l'unité composite.

Dans ce cas, nous avons spécifié '2:08' , qui a ajouté 2 jours et 8 heures à la valeur de date. La date d'origine n'a pas de partie horaire, et il est donc supposé que l'heure initiale est 00:00:00 .

MariaDB est raisonnablement indulgent avec la rigueur du format. Nous pouvons obtenir le même effet en utilisant différents séparateurs, et aussi en omettant le zéro non significatif.

Voici un autre exemple qui utilise le DATE_ADD() fonction avec différents intervalles de temps :

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

Résultat :

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

Voici quelques exemples supplémentaires de diverses unités composites :

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";

Résultat :

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