PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como make_time() funciona no PostgreSQL


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