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'