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

Comment MAKETIME() fonctionne dans MariaDB

Dans MariaDB, MAKETIME() est une fonction de date et d'heure intégrée qui renvoie une valeur de temps, basée sur les heures, les minutes et les secondes fournies comme arguments.

Syntaxe

La syntaxe ressemble à ceci :

MAKETIME(hour,minute,second)

Exemple

Voici un exemple :

SELECT MAKETIME(08, 30, 45);

Résultat :

+----------------------+
| MAKETIME(08, 30, 45) |
+----------------------+
| 08:30:45             |
+----------------------+

Et un autre :

SELECT MAKETIME(23, 8, 1);

Résultat :

+--------------------+
| MAKETIME(23, 8, 1) |
+--------------------+
| 23:08:01           |
+--------------------+

Plages

Si l'hour l'argument est en dehors de la plage -838 à 838 , la valeur est tronquée avec un avertissement.

Si la minute ou second les arguments sont hors de la plage 0 à 59 , le résultat est null , et un avertissement s'affiche (la documentation de MariaDB indique que la plage est 0 à 60 , mais ce n'est pas le cas dans mes tests. De plus, la documentation MariaDB indique également que la plage des valeurs de temps MariaDB est '-838:59:59.999999' à '838:59:59.999999' ).

Quoi qu'il en soit, voici un exemple d'heure avec des valeurs qui se situent à l'extrémité supérieure de leur plage acceptée :

SELECT MAKETIME(838, 59, 59.999999);

Résultat :

+------------------------------+
| MAKETIME(838, 59, 59.999999) |
+------------------------------+
| 838:59:59.999999             |
+------------------------------+

Ces valeurs étaient toujours dans leur plage acceptée, et nous avons donc obtenu une valeur de temps valide.

Minutes et secondes invalides

Voici ce qui se passe lorsque nous dépassons la plage acceptée pour la minute et second arguments :

SELECT 
    MAKETIME(00, 60, 00),
    MAKETIME(00, 00, 60);

Résultat :

+----------------------+----------------------+
| MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) |
+----------------------+----------------------+
| NULL                 | NULL                 |
+----------------------+----------------------+
1 row in set, 1 warning (0.001 sec)

Le résultat est null pour les deux, avec un avertissement.

Vérifions l'avertissement :

SHOW WARNINGS;

Résultat :

+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect seconds value: '60' |
+---------+------+-----------------------------------------+

Heures invalides

Voyons maintenant ce qui se passe lorsque nous sortons de la plage acceptée pour l'hour argument :

SELECT MAKETIME(900, 00, 00);

Résultat :

+-----------------------+
| MAKETIME(900, 00, 00) |
+-----------------------+
| 838:59:59             |
+-----------------------+
1 row in set, 1 warning (0.000 sec)

Dans ce scénario, une valeur de temps est renvoyée avec les heures, les minutes et les secondes tronquées à leur plage supérieure. Un avertissement est également renvoyé.

Vérifions l'avertissement :

SHOW WARNINGS;

Résultat :

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '900:00:00' |
+---------+------+---------------------------------------------+

Argument manquant

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

SELECT MAKETIME();

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'

Et un autre exemple :

SELECT MAKETIME( 12, 1 );

Résultat :

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'

Prendre rendez-vous

Voir aussi SEC_TO_TIME() pour construire une valeur de date à partir d'un nombre de secondes.

Voir aussi MAKEDATE() pour construire une valeur de date à partir de son année et de son jour de l'année.