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.