sql >> Base de Datos >  >> RDS >> Mysql

SUBTIME() Ejemplos – MySQL

En MySQL, puede usar SUBTIME() función para restar un valor de hora de una expresión de hora o fecha y hora.

La forma en que funciona es que proporciona dos argumentos; el primero es un valor de hora o fecha y hora, y el segundo es un valor de hora. El SUBTIME() Luego, la función resta el segundo argumento del primero y devuelve el resultado.

Sintaxis

La sintaxis es así:

SUBTIME(expr1,expr2)

Donde expr1 puede ser una expresión de hora o de fecha y hora, y expr2 es una expresión de tiempo.

Y así expr2 se resta de expr1 .

Ejemplo 1:uso básico

Aquí hay un ejemplo para demostrarlo.

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

Resultado:

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

Ejemplo 2:Restar segundos

En este ejemplo, también resto una cantidad de segundos del valor del tiempo.

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

Resultado:

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

Y obtenemos el mismo resultado incluso si omitimos la parte de los segundos del argumento de tiempo inicial.

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

Resultado:

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

Ejemplo 3:fracciones de segundo

También puedes restar la parte de los segundos fraccionarios.

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

Resultado:

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

Ejemplo 4:resultados negativos

Es bastante válido terminar con un valor negativo para su resultado.

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

Resultado:

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

Ejemplo 5:Restar de un valor de fecha y hora

En este ejemplo resto de un valor de fecha y hora (a diferencia de solo un valor de hora como en los ejemplos anteriores).

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

Resultado:

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

En este caso, la parte de la fecha no cambió, ya que el segundo argumento no era lo suficientemente grande como para afectarlo.

En el siguiente ejemplo, aumento el segundo argumento para que sea lo suficientemente grande como para afectar la parte de la fecha.

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

Resultado:

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

Como se ve en este ejemplo, los valores de tiempo no están restringidos a menos de 24 horas (pueden variar desde -838:59:59 a 838:59:59 .

Sin embargo, también puedes hacer cosas como esta:

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

Resultado:

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

Ejemplo 6 – Limitaciones del valor del tiempo

Como se mencionó, el tipo de datos de tiempo puede oscilar entre -838:59:59 a 838:59:59 . Esto significa que no puedes restar más que eso. También significa que el resultado no puede estar fuera de este rango. Por ejemplo, no puedes hacer esto:

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

Resultado:

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

El resultado es completamente incorrecto y MySQL muestra una advertencia.

Pero no es solo el segundo argumento del que debes tener cuidado. También se encontrará con el mismo problema si el primer argumento es inicialmente un valor negativo:

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

Resultado:

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