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

Comment TIME_FORMAT() fonctionne dans MariaDB

Dans MariaDB, TIME_FORMAT() est une fonction de date et d'heure intégrée qui formate une valeur d'heure en fonction de la chaîne de format donnée.

Cela fonctionne de la même manière que le DATE_FORMAT() fonction, sauf que la chaîne de format ne peut contenir que des spécificateurs de format pour les heures, les minutes et les secondes.

Il nécessite deux arguments ; l'heure et la chaîne de format.

Syntaxe

La syntaxe ressemble à ceci :

TIME_FORMAT(time,format) 

time est la valeur temporelle et le format est la chaîne de format. Voir Chaînes de format MariaDB pour une liste des spécificateurs de format acceptables. Comme mentionné, seuls les spécificateurs de format pour les heures, les minutes et les secondes sont acceptés. Toutes les autres valeurs renvoient null .

Exemple

Voici un exemple :

SELECT TIME_FORMAT('10:30:45', '%H %i %S'); 

Résultat :

+--------------------------------------------------+| HEURE_FORMAT('10:30:45', '%H %i %S') |+------------------------------------------ --------+| 10 30 45 |+--------------------------------------------------+

La voici à nouveau, mais cette fois nous fournissons une chaîne de format plus élaborée :

SELECT TIME_FORMAT(
    '10:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result; 

Résultat :

+--------------------------------------------------+| Résultat |+--------------------------------------------------+| 10 heures, 30 minutes et 45 secondes |+--------------------------------------------------+ 

Heures plus longues

TIME les valeurs peuvent être comprises dans la plage '-838:59:59.999999' à '838:59:59.999999' .

Par conséquent, la portion horaire peut être bien supérieure à 23 :

SELECT TIME_FORMAT(
    '810:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result; 

Résultat :

+--------------------------------------------------+| Résultat |+---------------------------------------------------+| 810 heures, 30 minutes et 45 secondes |+---------------------------------------------------- +

Valeurs de temps négatives

Voici un exemple avec une valeur de temps négative :

SELECT TIME_FORMAT(
    '-810:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result; 

Résultat :

+---------------------------------------------+| Résultat |+---------------------------------------------+| -810 heures, 30 minutes et 45 secondes |+-------------------------------------------------- --+

Heures hors plage

Cependant, fournir une valeur de temps en dehors de la plage renverra la limite supérieure de cette plage, ainsi qu'un avertissement :

SELECT TIME_FORMAT(
    '910:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result; 

Résultat :

+--------------------------------------------------+| Résultat |+---------------------------------------------------+| 838 heures, 59 minutes et 59 secondes |+----------------------------------------------------- +1 ligne dans l'ensemble, 1 avertissement (0,003 s)

Vérifions l'avertissement :

SHOW WARNINGS; 

Résultat :

+---------+------+---------------------------------- ----------------+| Niveau | Codage | Message |+---------+------+------------------------------ ---------------+| Avertissement | 1292 | Heure incorrecte tronquée :'910:30:45' |+---------+------+------- --------------------------+

Arguments invalides

Lorsqu'un argument invalide est passé, TIME_FORMAT() renvoie null avec un avertissement :

SELECT TIME_FORMAT('Homer', 'Simpson'); 

Résultat :

+---------------------------------------------+| TIME_FORMAT('Homère', 'Simpson') |+---------------------------------+| NULL |+---------------------------------+1 ligne dans l'ensemble, 1 avertissement (0,009 sec) 

Vérifiez l'avertissement :

SHOW WARNINGS; 

Résultat :

+---------+------+---------------------------------- --+| Niveau | Codage | Message |+---------+------+------------------------------ -+| Avertissement | 1292 | Valeur de temps incorrecte :'Homer' |+---------+------+------------------------ -------+

Chaîne de format non valide

La chaîne de format ne peut contenir que des spécificateurs de format pour les heures, les minutes et les secondes. Tout autre spécificateur de format donne null en cours de retour :

SELECT TIME_FORMAT('10:30:45', '%M %W'); 

Résultat :

+------------------------------------------------+| TIME_FORMAT('10:30:45', '%M %W') |+------------------------------- ---+| NULL |+------------------------------------------------+

Argument manquant

Appel de TIME_FORMAT() avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :

SELECT TIME_FORMAT(); 

Résultat :

ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'TIME_FORMAT'

Et un autre exemple :

SELECT TIME_FORMAT('10:09:10'); 

Résultat :

ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'TIME_FORMAT'