No PostgreSQL, o
make_time()
A função permite que você crie uma hora a partir de seus campos de hora, minuto e segundos. Sintaxe
A função tem a seguinte sintaxe:
make_time(hour int, min int, sec double precision)
Onde
hour
é a parte da hora, min
é a parte dos minutos e sec
é a parte dos segundos. A hora e os minutos são fornecidos como um inteiro , os segundos são fornecidos como precisão dupla .
O resultado é retornado como uma hora . Mais precisamente, é retornado como hora sem fuso horário .
Exemplo
Aqui está um exemplo básico para demonstrar.
SELECT make_time(7, 45, 15.08);
Resultado:
07:45:15.08
E podemos verificar o tipo de retorno com a seguinte consulta.
SELECT pg_typeof(make_time(7, 45, 15.08));
Resultado:
time without time zone
O
pg_typeof()
função retorna o tipo de dados de seu argumento, e então eu passei make_time()
como argumento.. Fora do alcance
Se algum dos argumentos estiver fora do intervalo dos valores possíveis para sua parte de data, você receberá um erro "fora do intervalo".
SELECT make_time(25, 45, 15.08);
Resultado:
ERROR: time field value out of range: 25:45:15.08
Passando Strings como Argumentos
A documentação do Postgres afirma que os argumentos devem ser inteiros (e precisão dupla no caso dos
seconds
argumento), mas passar strings também funciona (provavelmente porque elas são convertidas implicitamente em inteiros), desde que cada argumento esteja dentro de seu intervalo apropriado. SELECT make_time('7', '45', '15.08');
Resultado:
07:45:15.08
Novamente podemos usar
pg_type()
para verificar o tipo de dados resultante. SELECT pg_typeof(make_time('7', '45', '15.08'));
Resultado:
time without time zone
No entanto, você ainda precisa garantir que cada argumento seja válido uma vez convertido em um inteiro, caso contrário, você receberá um erro.
SELECT make_time('25', '45', '15.08');
Resultado:
ERROR: time field value out of range: 25:45:15.08