En PostgreSQL, el make_time()
La función le permite crear una hora a partir de sus campos de hora, minutos y segundos.
Sintaxis
La función tiene la siguiente sintaxis:
make_time(hour int, min int, sec double precision)
Donde hour
es la parte horaria, min
es la parte de los minutos, y sec
es la segunda parte.
La hora y los minutos se proporcionan como un número entero , los segundos se proporcionan como doble precisión .
El resultado se devuelve como una hora . Más precisamente, se devuelve como hora sin zona horaria .
Ejemplo
Aquí hay un ejemplo básico para demostrarlo.
SELECT make_time(7, 45, 15.08);
Resultado:
07:45:15.08
Y podemos verificar el tipo de devolución con la siguiente consulta.
SELECT pg_typeof(make_time(7, 45, 15.08));
Resultado:
time without time zone
El pg_typeof()
la función devuelve el tipo de datos de su argumento, por lo que pasé make_time()
como argumento..
Fuera de rango
Si alguno de los argumentos está fuera del rango de valores posibles para su parte de fecha, obtendrá un error de "fuera de rango".
SELECT make_time(25, 45, 15.08);
Resultado:
ERROR: time field value out of range: 25:45:15.08
Pasar cadenas como argumentos
La documentación de Postgres establece que los argumentos deben ser números enteros (y doble precisión en el caso de los seconds
argumento), pero pasar cadenas también funciona (probablemente porque se convierten implícitamente en números enteros), siempre que cada argumento esté dentro de su rango adecuado.
SELECT make_time('7', '45', '15.08');
Resultado:
07:45:15.08
Nuevamente podemos usar pg_type()
para comprobar el tipo de datos resultante.
SELECT pg_typeof(make_time('7', '45', '15.08'));
Resultado:
time without time zone
Sin embargo, aún debe asegurarse de que cada argumento sea válido una vez convertido a un número entero; de lo contrario, obtendrá un error.
SELECT make_time('25', '45', '15.08');
Resultado:
ERROR: time field value out of range: 25:45:15.08