MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como MAKETIME() funciona no MariaDB


No MariaDB, MAKETIME() é uma função interna de data e hora que retorna um valor de hora, com base nas horas, minutos e segundos fornecidos como argumentos.

Sintaxe


A sintaxe fica assim:
MAKETIME(hour,minute,second)

Exemplo


Aqui está um exemplo:
SELECT MAKETIME(08, 30, 45);

Resultado:
+----------------------+
| MAKETIME(08, 30, 45) |
+----------------------+
| 08:30:45             |
+----------------------+

E um outro:
SELECT MAKETIME(23, 8, 1);

Resultado:
+--------------------+
| MAKETIME(23, 8, 1) |
+--------------------+
| 23:08:01           |
+--------------------+

Intervalos


Se a hour argumento está fora do intervalo -838 para 838 , o valor será truncado com um aviso.

Se o minute ou second argumentos estão fora do intervalo 0 para 59 , o resultado é null , e um aviso é mostrado (a documentação do MariaDB afirma que o intervalo é 0 para 60 , mas este não é o caso em meus testes. Além disso, a documentação do MariaDB também afirma que o intervalo para os valores de tempo do MariaDB é '-838:59:59.999999' para '838:59:59.999999' ).

De qualquer forma, aqui está um exemplo de um tempo com valores que estão na extremidade superior de seu intervalo aceito:
SELECT MAKETIME(838, 59, 59.999999);

Resultado:
+------------------------------+
| MAKETIME(838, 59, 59.999999) |
+------------------------------+
| 838:59:59.999999             |
+------------------------------+

Esses valores ainda estavam dentro do intervalo aceito e, portanto, obtivemos um valor de tempo válido.

Minutos e segundos inválidos


Veja o que acontece quando ultrapassamos o intervalo aceito para o minute e 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)

O resultado é null para ambos, com um aviso.

Vamos verificar o aviso:
SHOW WARNINGS;

Resultado:
+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect seconds value: '60' |
+---------+------+-----------------------------------------+

Horário inválido


Agora vamos ver o que acontece quando saímos do intervalo aceito para a hour argumento:
SELECT MAKETIME(900, 00, 00);

Resultado:
+-----------------------+
| MAKETIME(900, 00, 00) |
+-----------------------+
| 838:59:59             |
+-----------------------+
1 row in set, 1 warning (0.000 sec)

Nesse cenário, um valor de tempo é retornado com horas, minutos e segundos recortados em seu intervalo superior. Um aviso também é retornado.

Vamos verificar o aviso:
SHOW WARNINGS;

Resultado:
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '900:00:00' |
+---------+------+---------------------------------------------+

Argumento ausente


Chamando MAKETIME() com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:
SELECT MAKETIME();

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

E outro exemplo:
SELECT MAKETIME( 12, 1 );

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

Marque um encontro


Veja também SEC_TO_TIME() para construir um valor de data a partir de um número de segundos.

Veja também MAKEDATE() para construir um valor de data a partir de seu ano e dia do ano.