Diferencia entre timestamp a interval en formato horas

From: mauricio pullabuestan <jmauriciopb(at)yahoo(dot)es>
To: Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Diferencia entre timestamp a interval en formato horas
Date: 2018-05-02 02:56:57
Message-ID: 1498965256.4866249.1525229817985@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buen día.

Tengo los siguientes datos de ejemplo

Create table tiempos (inicial timestamp, final timestamp);

Insert Into tiempos
Values
('2018-03-15 07:39:57', '2018-03-15 21:06:44'), 
('2018-03-15 21:06:44', '2018-03-16 07:55:20'), 
('2018-03-16 07:55:20', '2018-03-16 15:38:58'), 
('2018-03-16 15:38:58', '2018-03-16 19:59:34'), 
('2018-03-16 19:59:34', '2018-03-18 07:58:49'), 
('2018-03-18 07:58:49', '2018-03-18 14:34:34');

Select inicial, final, final - inicial As diferencia
 from tiempos;

Inicial                                Final                                Diferencia
2018-03-15 07:39:57         2018-03-15 21:06:44     13:26:47
2018-03-15 21:06:44         2018-03-16 07:55:20     10:48:36
2018-03-16 07:55:20         2018-03-16 15:38:58     07:43:38
2018-03-16 15:38:58         2018-03-16 19:59:34     04:20:36
2018-03-16 19:59:34         2018-03-18 07:58:49     1 day 11:59:15
2018-03-18 07:58:49         2018-03-18 14:34:34     06:35:45

Cuando la diferencia es mayor a un día me muestra 1 day 11:59:15, necesito que me muestre en formato de horas, es decir 35:59:15, así cuando haga un balance de la columna diferencia mantenga el formato de horas.

With t
AS 
(
Select inicial, final, final - inicial As diferencia
 from tiempos 
)
Select *
 , sum(diferencia) 
       OVER(ORDER BY inicial 
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS balance
 From t;

Inicial                                 Final                                Diferencia                balance
2018-03-15 07:39:57         2018-03-15 21:06:44     13:26:47                   13:26:47
2018-03-15 21:06:44         2018-03-16 07:55:20     10:48:36                    24:15:23
2018-03-16 07:55:20         2018-03-16 15:38:58     07:43:38                    31:59:01
2018-03-16 15:38:58         2018-03-16 19:59:34     04:20:36                    36:19:37
2018-03-16 19:59:34         2018-03-18 07:58:49     1 day 11:59:15           1 day 48:18:52
2018-03-18 07:58:49         2018-03-18 14:34:34     06:35:45                    1 day 54:54:37

Aquí se me muestra como lo necesito incluso cuando el tiempo es mayor a 24:00 h, pero se encuentra con un valor 1 day el formato es otro, como puedo hacer para que todos los cálculos se muestren en formato hora?

Saludos
Mauricio

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jairo Graterón 2018-05-02 04:06:31 Re: Diferencia entre timestamp a interval en formato horas
Previous Message Jairo Graterón 2018-05-01 20:03:52 Re: Log de conexion