Hola Lista Aunque no es puramente operaciones con rangos plateo esta solución:
select tsrange(min(dato),max(dato)) from ( select *,sum(rangos) over(order by dato asc) as grupo from ( select *,case when dato -lag(dato) over(order by dato asc)<>'30 minutes'::interval then 1 else 0 end as rangos from ( select * from generate_series(lower('[2015-11-27 09:30:00,2015-11-27 18:00:00)'::tsrange),upper('[2015-11-27 09:30:00,2015-11-27 18:00:00)'::tsrange),'30 minutes'::interval) as a(dato) except select * from generate_series(lower('[2015-11-27 10:30:00,2015-11-27 11:00:00)'::tsrange),upper('[2015-11-27 10:30:00,2015-11-27 11:00:00)'::tsrange),'30 minutes'::interval) as a(dato) ) as i order by dato asc ) as i ) as j group by grupo test#; tsrange ----------------------------------------------- ["2015-11-27 11:30:00","2015-11-27 18:00:00") ["2015-11-27 09:30:00","2015-11-27 10:00:00") (2 rows) El 23 de junio de 2017, 08:12, Stephen Amell<stephenam...@inbox.lv> escribió: > Buenos días comunidad postgresista! > > Hoy les escribo para consultarles a ver si me dan una idea sobre como > encarar un problema de rangos timestamp > > Dado un rango de atención: '["2015-11-27 09:30:00","2015-11-27 > 18:00:00")'::tsrange > Dado un rango de la duración de la atención: '["2015-11-27 > 10:30:00","2015-11-27 11:00:00")'::tsrange > > Necesito obtener el rango de atención libre, que serian dos rangos > cortados por el medio. > > Lo primero que probé es ver si funcionaba con un: > > select '["2015-11-27 09:30:00","2015-11-27 18:00:00")'::tsrange - > '["2015-11-27 10:30:00","2015-11-27 11:00:00")'::tsrange > > ERROR: el resultado de la diferencia de rangos no sería contiguo > SQL state: 22000 > > Ahí empece a googlear y me encuentro que no es posible por limitaciones > propias de postgres y quería saber si alguien me puede orientar con algún > workaround o algo. > > > Desde ya muchísimas gracias! > Diego > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate