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.