En MariaDB, MAKETIME()
es una función de fecha y hora incorporada que devuelve un valor de tiempo, basado en las horas, minutos y segundos proporcionados como argumentos.
Sintaxis
La sintaxis es así:
MAKETIME(hour,minute,second)
Ejemplo
He aquí un ejemplo:
SELECT MAKETIME(08, 30, 45);
Resultado:
+----------------------+ | MAKETIME(08, 30, 45) | +----------------------+ | 08:30:45 | +----------------------+
Y otro más:
SELECT MAKETIME(23, 8, 1);
Resultado:
+--------------------+ | MAKETIME(23, 8, 1) | +--------------------+ | 23:08:01 | +--------------------+
Rangos
Si la hour
el argumento está fuera del rango -838
a 838
, el valor se trunca con una advertencia.
Si el minute
o second
los argumentos están fuera del rango 0
a 59
, el resultado es null
y se muestra una advertencia (la documentación de MariaDB indica que el rango es 0
a 60
, pero este no es el caso en mis pruebas. Además, la documentación de MariaDB también establece que el rango de valores de tiempo de MariaDB es '-838:59:59.999999'
a '838:59:59.999999'
).
De todos modos, aquí hay un ejemplo de una hora con valores que están en el extremo superior de su rango aceptado:
SELECT MAKETIME(838, 59, 59.999999);
Resultado:
+------------------------------+ | MAKETIME(838, 59, 59.999999) | +------------------------------+ | 838:59:59.999999 | +------------------------------+
Estos valores todavía estaban dentro de su rango aceptado, por lo que obtuvimos un valor de tiempo válido.
Minutos y segundos no válidos
Esto es lo que sucede cuando superamos el rango aceptado para el minute
y second
argumentos:
SELECT
MAKETIME(00, 60, 00),
MAKETIME(00, 00, 60);
Resultado:
+----------------------+----------------------+ | MAKETIME(00, 60, 00) | MAKETIME(00, 00, 60) | +----------------------+----------------------+ | NULL | NULL | +----------------------+----------------------+ 1 row in set, 1 warning (0.001 sec)
El resultado es null
para ambos, con una advertencia.
Revisemos la advertencia:
SHOW WARNINGS;
Resultado:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect seconds value: '60' | +---------+------+-----------------------------------------+
Horas no válidas
Ahora veamos qué sucede cuando salimos del rango aceptado para la hour
argumento:
SELECT MAKETIME(900, 00, 00);
Resultado:
+-----------------------+ | MAKETIME(900, 00, 00) | +-----------------------+ | 838:59:59 | +-----------------------+ 1 row in set, 1 warning (0.000 sec)
En este escenario, se devuelve un valor de tiempo con horas, minutos y segundos recortados a su rango superior. También se devuelve una advertencia.
Revisemos la advertencia:
SHOW WARNINGS;
Resultado:
+---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1292 | Truncated incorrect time value: '900:00:00' | +---------+------+---------------------------------------------+
Argumento faltante
Llamando a MAKETIME()
con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:
SELECT MAKETIME();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Y otro ejemplo:
SELECT MAKETIME( 12, 1 );
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'MAKETIME'
Fijar una cita
Ver también SEC_TO_TIME()
para construir un valor de fecha a partir de un número de segundos.
Ver también MAKEDATE()
para construir un valor de fecha a partir de su año y día del año.