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

Cómo funciona MAKETIME() en MariaDB

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.