Saludos
with t as ( Select inicial, final, final - inicial, date_part('day',final - inicial) as d_day, date_part('hour',final-inicial) as d_hour, date_part('minute',final-inicial) as d_min, date_part('second',final-inicial) as d_sec from tiempos) select inicial, final, (d_day * 24 + d_hour || ':' || d_min || ':' || d_sec) as diferencia from t order by d_day DESC, d_hour DESC, d_min DESC, d_sec DESC 2018-03-16 19:59:34; 2018-03-18 07:58:49; 35:59:15 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; 7:43:38 2018-03-18 07:58:49; 2018-03-18 14:34:34; 6:35:45 2018-03-16 15:38:58; 2018-03-16 19:59:34; 4:20:36 No existe horas de 35 o más por eso lo convertí en texto y para ordenar se usa los campos d_day, d_hour, d_min y d_sec El 1 de mayo de 2018, 22:56, mauricio pullabuestan <jmaurici...@yahoo.es> escribió: > 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 > >