CREATE TABLE tiempos ( tiempo interval ) WITH ( OIDS=FALSE ); ALTER TABLE tiempos OWNER TO postgres;
Luego agrego : 00:20 00:35 00:50 00:13 00:25 00:53 Y todos se ponen : "00:20:00" "00:35:00" "00:50:00" "00:13:00" "00:25:00" "00:53:00" Luego hago mi query : Select sum(tiempo) from tiempos Y me sale : "03:53:00" ________________________________ De: Alvaro Hilario <king...@gmail.com> Enviado: jueves, 22 de noviembre de 2018 15:33 Para: mcanc...@hotmail.com Cc: alvhe...@2ndquadrant.com; jaime.casan...@2ndquadrant.com; pgsql-es-ayuda; pgsql-es-ayuda@lists.postgresql.org Asunto: Re: sumar horas y minutos Hola, revisa los valores insertados en la tabla, hice el escenario que describes y me da el resultado de 3:16 como indicas que debería dar. El jue., 22 nov. 2018 a las 11:13, Micky Khan (<mcanc...@hotmail.com<mailto:mcanc...@hotmail.com>>) escribió: "tiempo" "00:20:00" "00:35:00" "00:50:00" "00:13:00" "00:25:00" "00:53:00" Lo puse todo a un campo interval(gracias por la sugerencia) y la suma me sale "03:53:00" !!!!!!!!!!!!!! Deberia salir "03:16" Select sum(tiempo) from tiempos Ese fue mi query,... Por que me calcula mal ?? ________________________________ De: Alvaro Herrera <alvhe...@2ndquadrant.com<mailto:alvhe...@2ndquadrant.com>> Enviado: jueves, 22 de noviembre de 2018 14:59 Para: Jaime Casanova Cc: MKHotmail; POSTGRES; pgsql-es-ayuda@lists.postgresql.org<mailto:pgsql-es-ayuda@lists.postgresql.org> Asunto: Re: sumar horas y minutos Jaime Casanova escribió: > Como Álvaro hace notar lo que interesa aquí es saber el tipo de dato, > si es interval o time bastaría con un sum si es de tipo text tendrás > que hacer primero un cast y luego sumar Ojo que un time no se puede sumar de forma satisfactoria en general. De partida, "time" representa hora del día. Ejemplo '13:00' es la 1pm de un cierto día. Sumar dos time directamente no tiene sentido, y no hay operador: =# select time '13:00' + time '13:00'; ERROR: el operador no es único: time without time zone + time without time zone LÍNEA 1: select time '13:00' + time '13:00'; ^ SUGERENCIA: No se pudo escoger el operador más adecuado. Puede ser necesario agregar conversiones explícitas de tipos. Ahora, podrías sumar un time con un interval (empezaste a tal hora y te demoraste cierto intervalo de tiempo). Pero como time representa hora del día, obviamente el resultado no puede pasar de 24 horas ... ejemplo: =# select time '13:00' + interval '13:00'; ?column? ────────── 02:00:00 (1 fila) El resultado en este caso son las 2 am del día siguiente. Lo que sí funciona es sumar interval, que representan duraciones de algo (estuviste trece horas trabajando y después trece horas durmiendo): =# select interval '13:00' + interval '13:00'; ?column? ────────── 26:00:00 (1 fila) -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Al_Hilario Company