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

Comment TIME() fonctionne dans MariaDB

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)

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