sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona TIME() en MariaDB

En MariaDB, TIME() es una función de fecha y hora integrada que extrae la parte de la hora de una expresión de fecha y hora determinada y la devuelve como una cadena.

Acepta un argumento, que es el valor de hora o fecha y hora para el que desea extraer la hora.

Sintaxis

La sintaxis es así:

TIME(expr)

Donde expr es la expresión de hora o fecha y hora para la que se extrae la hora.

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT TIME('2030-02-01 10:30:45');

Resultado:

+-----------------------------+
| TIME('2030-02-01 10:30:45') |
+-----------------------------+
| 10:30:45                    |
+-----------------------------+

Valores de tiempo

Aquí hay un ejemplo que extrae el tiempo de un valor de tiempo:

SELECT TIME('10:30:45');

Resultado:

+------------------+
| TIME('10:30:45') |
+------------------+
| 10:30:45         |
+------------------+

Microsegundos

Aquí hay un ejemplo que incluye microsegundos:

SELECT TIME('2030-02-01 10:30:45.123456');

Resultado:

+------------------------------------+
| TIME('2030-02-01 10:30:45.123456') |
+------------------------------------+
| 10:30:45.123456                    |
+------------------------------------+

Horarios más amplios

TIME los valores pueden estar en el rango '-838:59:59.999999' a '838:59:59.999999' .

Por lo tanto, la parte de la hora puede ser mucho mayor que 23 :

SELECT TIME('578:30:45');

Resultado:

+-------------------+
| TIME('578:30:45') |
+-------------------+
| 578:30:45         |
+-------------------+

Tiempos negativos

Los tiempos negativos son válidos:

Ejemplo

SELECT TIME('-578:30:45');

Resultado:

+--------------------+
| TIME('-578:30:45') |
+--------------------+
| -578:30:45         |
+--------------------+

Horas fuera de rango

Valores de tiempo fuera del rango '-838:59:59.999999' a '838:59:59.999999' están limitados en el límite correspondiente e incluyen una advertencia.

Ejemplo:

SELECT TIME('978:30:45');

Resultado (usando salida vertical):

+-------------------+
| TIME('978:30:45') |
+-------------------+
| 838:59:59         |
+-------------------+
1 row in set, 1 warning (0.003 sec)

Revisemos la advertencia:

SHOW WARNINGS;

Resultado (usando salida vertical):

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '978:30:45' |
+---------+------+---------------------------------------------+

Fecha actual

Podemos pasar NOW() como argumento de fecha y hora para usar la hora actual:

SELECT 
    NOW(),
    TIME(NOW());

Resultado:

+---------------------+-------------+
| NOW()               | TIME(NOW()) |
+---------------------+-------------+
| 2021-05-27 10:24:23 | 10:24:23    |
+---------------------+-------------+

Argumentos no válidos

Cuando se pasa un argumento no válido, TIME() devuelve null con una advertencia:

SELECT TIME('Ten Thirty AM');

Resultado:

+-----------------------+
| TIME('Ten Thirty AM') |
+-----------------------+
| NULL                  |
+-----------------------+
1 row in set, 1 warning (0.002 sec)

Compruebe la advertencia:

SHOW WARNINGS;

Resultado:

+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Incorrect time value: 'Ten Thirty AM' |
+---------+------+---------------------------------------+

Argumento faltante

Llamando a TIME() con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:

SELECT TIME();

Resultado:

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

Y otro ejemplo:

SELECT TIME('10:30:45', '06:30:45');

Resultado:

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