Oracle - Solapamientos de fechas

 
Vista:

Solapamientos de fechas

Publicado por Arantxa (2 intervenciones) el 24/02/2009 10:00:56
Tengo una tabla con dos campos fechas (fecha_ini y fecha_fin), esta tabla se carga con sqlloader directamente de un fichero.
Una vez que los datos están cargados, quiero comprobar si hay algún tipo de solapamiento de fechas... pero no se como hacer la select, si alguien me puede echar un cable, gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Solapamientos de fechas

Publicado por Pedro (1 intervención) el 24/02/2009 11:12:40
No se si he entendido mal la pregunta, pues no explicas muy bien lo que quieres hacer y donde lo quieres hacer.

Lo mas sencillo es que tu en principio cargues las tablas con el loader, y luego utilices una funcion o un procedimiento que te valide que ese registro sea correcto. no se que entiendes tu por solapar, me imagino que debe ser
select *
from tabla
where fecha_ini > fecha_fin:

tambien puedes crear un campo o dos nuevo, depende de las pirulas que te quieras montar y lo q necesites (a lo mejor no merece la pena) que sea campo error y se te quede una cosa del tipo

update tabla
set error ='S'
where fecha_ini > fecha_fin:

Asi tendrias marcado aquello q este erroneo.

De todas formas estoy adivinando un poco lo que quieres hacer.No se si te referiras a ese tipo de validación....Deberias ser un poco mas precisa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Solapamientos de fechas

Publicado por Arantxa (2 intervenciones) el 24/02/2009 11:56:20
Darte las gracias y ya siento no haber sido más precisa antes, espero que ahora quede más claro y pongo la solución que he encontrado por si a alguien le pasa lo mismo...
Con solapamiento me refería a que dos intervalos de fechas distintos se solapen en el tiempo.

Ejemplo, la tabla "tabla" tiene los siguientes datos:

FECHA_INI FECHA_FIN
26/09/2007 27/11/2007
27/07/2007 26/09/2007
30/05/2007 27/07/2007
19/02/2007 27/03/2007
19/02/2007 30/05/2007

En las dos últimas filas la fecha de inicio es la misma, pero podría darse cualquier tipo de solapamiento.

Solución:

select * from tabla t1, tabla t2
where t2.fecha_ini < t1.fecha_fin
and t2.fecha_fin > t1.fecha_ini
and not t2.rowid = t1.rowid

Lo que hace es comparar la tabla consigo misma, pero con la condición "and not t2.rowid = t1.rowid" aseguras de que no compara la misma fila. En el caso de que haya solapamientos devuelve dichos registros. En el caso del ejemplo anterior las dos últimas filas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar