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