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

Exemples SUBTIME() – MySQL

Dans MySQL, vous pouvez utiliser le SUBTIME() fonction pour soustraire une valeur d'heure d'une expression d'heure ou de date/heure.

La façon dont cela fonctionne est que vous fournissez deux arguments; le premier est une valeur d'heure ou de date/heure et le second est une valeur d'heure. Le SUBTIME() La fonction soustrait alors le deuxième argument du premier et renvoie le résultat.

Syntaxe

La syntaxe ressemble à ceci :

SUBTIME(expr1,expr2)

expr1 peut être une expression d'heure ou de date et d'heure, et expr2 est une expression temporelle.

Et donc expr2 est soustrait de expr1 .

Exemple 1 - Utilisation de base

Voici un exemple pour illustrer.

SELECT SUBTIME('12:35:00', '1:30');

Résultat :

+-----------------------------+
| SUBTIME('12:35:00', '1:30') |
+-----------------------------+
| 11:05:00                    |
+-----------------------------+

Exemple 2 – Soustraction de secondes

Dans cet exemple, je soustrais également un nombre de secondes de la valeur de temps.

SELECT SUBTIME('12:35:00', '1:30:30');

Résultat :

+--------------------------------+
| SUBTIME('12:35:00', '1:30:30') |
+--------------------------------+
| 11:04:30                       |
+--------------------------------+

Et nous obtenons le même résultat même si nous omettons la partie secondes de l'argument de temps initial.

SELECT SUBTIME('12:35', '1:30:30');

Résultat :

+-----------------------------+
| SUBTIME('12:35', '1:30:30') |
+-----------------------------+
| 11:04:30                    |
+-----------------------------+

Exemple 3 – Fraction de seconde

Vous pouvez également soustraire la fraction de seconde.

SELECT SUBTIME('12:35:00.888888', '1:30:30.555555');

Résultat :

+----------------------------------------------+
| SUBTIME('12:35:00.888888', '1:30:30.555555') |
+----------------------------------------------+
| 11:04:30.333333                              |
+----------------------------------------------+

Exemple 4 - Résultats négatifs

Il est tout à fait valable de se retrouver avec une valeur négative pour votre résultat.

SELECT SUBTIME('12:35:00', '20:30:30');

Résultat :

+---------------------------------+
| SUBTIME('12:35:00', '20:30:30') |
+---------------------------------+
| -07:55:30                       |
+---------------------------------+

Exemple 5 - Soustraire d'une valeur datetime

Dans cet exemple, je soustrais d'une valeur datetime (par opposition à une simple valeur temporelle comme dans les exemples précédents).

SELECT SUBTIME('2021-01-01 12:35:00', '1:30:30');

Résultat :

+-------------------------------------------+
| SUBTIME('2021-01-01 12:35:00', '1:30:30') |
+-------------------------------------------+
| 2021-01-01 11:04:30                       |
+-------------------------------------------+

Dans ce cas, la partie date était inchangée, car le deuxième argument n'était pas assez grand pour l'affecter.

Dans cet exemple suivant, j'augmente le deuxième argument afin qu'il soit suffisamment grand pour affecter la partie date.

SELECT SUBTIME('2021-01-01 12:35:00', '100:30:30');

Résultat :

+---------------------------------------------+
| SUBTIME('2021-01-01 12:35:00', '100:30:30') |
+---------------------------------------------+
| 2020-12-28 08:04:30                         |
+---------------------------------------------+

Comme on le voit dans cet exemple, les valeurs de temps ne sont pas limitées à moins de 24 heures (elles peuvent aller de -838:59:59 à 838:59:59 .

Cependant, vous pouvez également faire des choses comme ceci :

SELECT SUBTIME('2021-01-01 12:35:00', '4 4:30:30');

Résultat :

+---------------------------------------------+
| SUBTIME('2021-01-01 12:35:00', '4 4:30:30') |
+---------------------------------------------+
| 2020-12-28 08:04:30                         |
+---------------------------------------------+

Exemple 6 – Limitations de la valeur de temps

Comme mentionné, le type de données temporelles peut aller de -838:59:59 à 838:59:59 . Cela signifie que vous ne pouvez pas soustraire plus que cela. Cela signifie également que le résultat ne peut pas être en dehors de cette plage. Par exemple, vous ne pouvez pas faire ceci :

SELECT SUBTIME('12:35:00', '20000000:30:30');

Résultat :

+---------------------------------------+
| SUBTIME('12:35:00', '20000000:30:30') |
+---------------------------------------+
| -826:24:59                            |
+---------------------------------------+
1 row in set, 1 warning (0.01 sec)

Le résultat est complètement faux et MySQL affiche un avertissement.

Mais ce n'est pas seulement le deuxième argument auquel vous devez faire attention. Vous rencontrerez également le même problème si le premier argument est initialement une valeur négative :

SELECT SUBTIME('-800:35:00', '50:30:30');

Résultat :

+-----------------------------------+
| SUBTIME('-800:35:00', '50:30:30') |
+-----------------------------------+
| -838:59:59                        |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)