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

4 fonctions pour obtenir l'heure à partir d'une valeur de temps dans MariaDB

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