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

Cómo funciona TIME_FORMAT() en MariaDB

En MariaDB, TIME_FORMAT() es una función de fecha y hora incorporada que da formato a un valor de tiempo de acuerdo con la cadena de formato dada.

Funciona de forma similar a DATE_FORMAT() función, excepto que la cadena de formato solo puede contener especificadores de formato para horas, minutos y segundos.

Requiere dos argumentos; la hora y la cadena de formato.

Sintaxis

La sintaxis es así:

TIME_FORMAT(time,format)

Donde time es el valor de tiempo y format es la cadena de formato. Consulte Cadenas de formato de MariaDB para obtener una lista de especificadores de formato aceptables. Como se mencionó, solo se aceptan los especificadores de formato para horas, minutos y segundos. Todos los demás valores devuelven null .

Ejemplo

He aquí un ejemplo:

SELECT TIME_FORMAT('10:30:45', '%H %i %S');

Resultado:

+-------------------------------------+
| TIME_FORMAT('10:30:45', '%H %i %S') |
+-------------------------------------+
| 10 30 45                            |
+-------------------------------------+

Aquí está de nuevo, pero esta vez proporcionamos una cadena de formato más elaborada:

SELECT TIME_FORMAT(
    '10:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Resultado:

+--------------------------------------+
| Result                               |
+--------------------------------------+
| 10 hours, 30 minutes, and 45 seconds |
+--------------------------------------+

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_FORMAT(
    '810:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Resultado:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| 810 hours, 30 minutes, and 45 seconds |
+---------------------------------------+

Valores de tiempo negativos

Aquí hay un ejemplo con un valor de tiempo negativo:

SELECT TIME_FORMAT(
    '-810:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Resultado:

+----------------------------------------+
| Result                                 |
+----------------------------------------+
| -810 hours, 30 minutes, and 45 seconds |
+----------------------------------------+

Tiempos fuera de rango

Sin embargo, proporcionar un valor de tiempo fuera del rango devolverá el límite superior de ese rango, junto con una advertencia:

SELECT TIME_FORMAT(
    '910:30:45', 
    '%H hours, %i minutes, and %S seconds'
    )
AS Result;

Resultado:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| 838 hours, 59 minutes, and 59 seconds |
+---------------------------------------+
1 row in set, 1 warning (0.003 sec)

Revisemos la advertencia:

SHOW WARNINGS;

Resultado:

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

Argumentos no válidos

Cuando se pasan argumentos no válidos, TIME_FORMAT() devuelve null con una advertencia:

SELECT TIME_FORMAT('Homer', 'Simpson');

Resultado:

+---------------------------------+
| TIME_FORMAT('Homer', 'Simpson') |
+---------------------------------+
| NULL                            |
+---------------------------------+
1 row in set, 1 warning (0.009 sec)

Compruebe la advertencia:

SHOW WARNINGS;

Resultado:

+---------+------+-------------------------------+
| Level   | Code | Message                       |
+---------+------+-------------------------------+
| Warning | 1292 | Incorrect time value: 'Homer' |
+---------+------+-------------------------------+

Cadena de formato no válida

La cadena de formato solo puede contener especificadores de formato para horas, minutos y segundos. Cualquier otro especificador de formato da como resultado null siendo devuelto:

SELECT TIME_FORMAT('10:30:45', '%M %W');

Resultado:

+----------------------------------+
| TIME_FORMAT('10:30:45', '%M %W') |
+----------------------------------+
| NULL                             |
+----------------------------------+

Argumento faltante

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

SELECT TIME_FORMAT();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_FORMAT'

Y otro ejemplo:

SELECT TIME_FORMAT('10:09:10');

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_FORMAT'