Vous trouverez ci-dessous 4 fonctions qui vous permettent de retourner l'heure à partir d'une valeur horaire dans MariaDB.
Le HOUR()
Fonction
Le HOUR()
la fonction renvoie l'heure pour un TIME
donné ou DATETIME
expression. Il accepte un argument, qui est l'heure à partir de laquelle vous voulez extraire l'heure.
Exemple :
SELECT HOUR('03:45:30');
Résultat :
+------------------+| HEURE('03:45:30') |+------------------------------+| 3 |+------------------+
Pour les valeurs d'heure du jour, il renvoie l'heure sous forme de nombre dans la plage 0
à 23
. Cependant, la plage de TIME
les valeurs peuvent être beaucoup plus grandes, et par conséquent, la valeur renvoyée peut être bien supérieure à 23
. Plus précisément, TIME
les valeurs peuvent être comprises dans la plage '-838:59:59.999999'
à '838:59:59.999999'
.
Voici un exemple avec une partie horaire plus importante :
SELECT HOUR('838:45:30');
Résultat :
+-------------------+| HEURE('838:45:30') |+------------------+| 838 |+------------------+
Si l'heure est en dehors de la plage acceptée pour TIME
valeurs, la valeur de retour est 838
avec un avertissement.
TIME
les valeurs peuvent également être négatives. Dans de tels cas, HOUR()
renvoie une valeur positive.
Le EXTRACT()
Fonction
Le EXTRACT()
La fonction vous permet d'extraire une unité spécifiée de la valeur date/heure. Par conséquent, vous pouvez l'utiliser pour extraire l'heure (ainsi que d'autres unités) de la valeur de temps.
Exemple :
SELECT EXTRACT(HOUR FROM '10:47:01');
Résultat :
+---------------------------------------------+| EXTRAIT(HEURE DE '10:47:01') |+-------------------------------+| 10 |+-------------------------------+
Le TIME_FORMAT()
Fonction
Le TIME_FORMAT()
La fonction vous permet de formater une valeur de temps basée sur une chaîne de format. La chaîne de format spécifie comment l'heure doit être formatée.
Vous pouvez donc utiliser cette fonction pour remonter l'heure (ainsi que les minutes et les secondes) à partir de l'heure. Il existe différentes options pour retourner l'heure.
Voici un exemple qui renvoie l'heure sous différentes formes :
SELECT
TIME_FORMAT('18:45:30', '%H') AS '%H',
TIME_FORMAT('18:45:30', '%h') AS '%h',
TIME_FORMAT('18:45:30', '%I') AS '%I',
TIME_FORMAT('18:45:30', '%k') AS '%k',
TIME_FORMAT('18:45:30', '%l') AS '%l';
Résultat :
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| 18 | 06 | 06 | 18 | 6 |+------+------+------+------+------+
Voici une description de chacun de ces spécificateurs de format :
Spécificateur de format | Description |
---|---|
%H | Heure avec 2 chiffres entre 00 et 23. |
%h | Heure avec 2 chiffres entre 01 et 12. |
%I | Heure avec 2 chiffres entre 01 et 12. |
%k | Heure avec 1 chiffres entre 0 et 23. |
%l | Heure avec 1 chiffres entre 1 et 12. |
Le TIME_FORMAT()
la fonction accepte un sous-ensemble des chaînes de format qui peuvent être utilisées avec le DATE_FORMAT()
une fonction. Voir Chaînes de format MariaDB pour une liste complète des chaînes/spécificateurs de format pouvant être utilisés avec DATE_FORMAT()
. Le TIME_FORMAT()
La fonction accepte uniquement les spécificateurs de format pour les heures, les minutes et les secondes. Tout autre spécificateur de format donne null
ou 0
être retourné.
Le DATE_FORMAT()
Fonction
Le DATE_FORMAT()
La fonction vous permet de formater une valeur date ou datetime en fonction d'une chaîne de format. La chaîne de format spécifie comment la date/heure doit être formatée.
Nous pouvons donc utiliser les mêmes spécificateurs de format que nous avons utilisés avec le TIME_FORMAT()
fonction dans l'exemple précédent. Cependant, DATE_FORMAT()
n'accepte pas un TIME
valeur, nous devrons donc passer un DATETIME
valeur.
SELECT
DATE_FORMAT('2023-01-01 18:45:30', '%H') AS '%H',
DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l';
Résultat :
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| 18 | 06 | 06 | 18 | 6 |+------+------+------+------+------+
Passer juste un TIME
value ne suffit pas avec cette fonction :
SELECT
DATE_FORMAT('18:45:30', '%H') AS '%H',
DATE_FORMAT('18:45:30', '%h') AS '%h',
DATE_FORMAT('18:45:30', '%I') AS '%I',
DATE_FORMAT('18:45:30', '%k') AS '%k',
DATE_FORMAT('18:45:30', '%l') AS '%l';
Résultat :
+------+------+------+------+------+| %H | %h | %I | %k | %l |+------+------+------+------+------+| NUL | NUL | NUL | NUL | NULL |+------+------+------+------+------+1 ligne dans le jeu, 5 avertissements (0,000 sec)Afficher les avertissements :
SHOW WARNINGS;
Résultat :
+---------+------+---------------------------------- ---------+| Niveau | Codage | Message |+---------+------+------------------------------ --------+| Avertissement | 1292 | Valeur de date/heure incorrecte :'18:45:30' || Avertissement | 1292 | Valeur de date/heure incorrecte :'18:45:30' || Avertissement | 1292 | Valeur de date/heure incorrecte :'18:45:30' || Avertissement | 1292 | Valeur de date/heure incorrecte :'18:45:30' || Avertissement | 1292 | Valeur datetime incorrecte :'18:45:30' |+---------+------+-------------------- ------------------+