Dans MariaDB, TIME()
est une fonction de date et d'heure intégrée qui extrait la partie heure d'une expression d'heure ou de date/heure donnée et la renvoie sous forme de chaîne.
Il accepte un argument, qui est la valeur d'heure ou de date/heure pour laquelle vous souhaitez extraire l'heure.
Syntaxe
La syntaxe ressemble à ceci :
TIME(expr)
Où expr
est l'expression d'heure ou de date/heure pour laquelle extraire l'heure.
Exemple
Voici un exemple pour illustrer :
SELECT TIME('2030-02-01 10:30:45');
Résultat :
+-----------------------------+ | TIME('2030-02-01 10:30:45') | +-----------------------------+ | 10:30:45 | +-----------------------------+
Valeurs de temps
Voici un exemple qui extrait l'heure d'une valeur d'heure :
SELECT TIME('10:30:45');
Résultat :
+------------------+ | TIME('10:30:45') | +------------------+ | 10:30:45 | +------------------+
Microsecondes
Voici un exemple qui inclut les microsecondes :
SELECT TIME('2030-02-01 10:30:45.123456');
Résultat :
+------------------------------------+ | TIME('2030-02-01 10:30:45.123456') | +------------------------------------+ | 10:30:45.123456 | +------------------------------------+
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('578:30:45');
Résultat :
+-------------------+ | TIME('578:30:45') | +-------------------+ | 578:30:45 | +-------------------+
Temps négatifs
Les heures négatives sont valides :
Exemple
SELECT TIME('-578:30:45');
Résultat :
+--------------------+ | TIME('-578:30:45') | +--------------------+ | -578:30:45 | +--------------------+
Heures hors plage
Valeurs de temps en dehors de la plage '-838:59:59.999999'
à '838:59:59.999999'
sont plafonnés à la limite pertinente et incluent un avertissement.
Exemple :
SELECT TIME('978:30:45');
Résultat (en utilisant la sortie verticale) :
+-------------------+ | TIME('978:30:45') | +-------------------+ | 838:59:59 | +-------------------+ 1 row in set, 1 warning (0.003 sec)
Vérifions l'avertissement :
SHOW WARNINGS;
Résultat (en utilisant la sortie verticale) :
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '978:30:45' | +---------+------+---------------------------------------------+
Date actuelle
Nous pouvons passer NOW()
comme argument datetime pour utiliser l'heure actuelle :
SELECT
NOW(),
TIME(NOW());
Résultat :
+---------------------+-------------+ | NOW() | TIME(NOW()) | +---------------------+-------------+ | 2021-05-27 10:24:23 | 10:24:23 | +---------------------+-------------+
Arguments invalides
Lorsqu'un argument invalide est passé, TIME()
renvoie null
avec un avertissement :
SELECT TIME('Ten Thirty AM');
Résultat :
+-----------------------+ | TIME('Ten Thirty AM') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.002 sec)
Vérifiez l'avertissement :
SHOW WARNINGS;
Résultat :
+---------+------+---------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------+ | Warning | 1292 | Incorrect time value: 'Ten Thirty AM' | +---------+------+---------------------------------------+
Argument manquant
Appel de TIME()
avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :
SELECT TIME();
Résultat :
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Et un autre exemple :
SELECT TIME('10:30:45', '06:30:45');
Résultat :
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '06:30:45')' at line 1