Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas para filtrar fechas que comienzan y terminan fuera del rango ingresado

Estas en el tema de Problemas para filtrar fechas que comienzan y terminan fuera del rango ingresado en el foro de PHP en Foros del Web. Que tal amigos....les cuento que tengo una aplicación donde se registran las ausencias laborales que pueden ser permisos, vacaciones, licencias médicas etc. Cuando quiero averiguar ...
  #1 (permalink)  
Antiguo 03/07/2014, 13:53
 
Fecha de Ingreso: febrero-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Problemas para filtrar fechas que comienzan y terminan fuera del rango ingresado

Que tal amigos....les cuento que tengo una aplicación donde se registran las ausencias laborales que pueden ser permisos, vacaciones, licencias médicas etc. Cuando quiero averiguar quien está ausente durante un rango específico de fechas tengo problemas cuando estas ausencias se han generado antes del inicio del rango y terminan después del fin del rango ingresado ya que no se contabilizan. Cuando el inicio o el termino del permiso está dentro del rango de fechas ingresado SÍ se contabiliza pero en el otro caso no. Alguna idea de cómo poder implementar algo así???. Tengo en una tabla guardados la fecha de inicio del permiso y la fecha de termino del permiso, todos son campos DATE. Lo que uso actualmente y como ya les comenté me funciona en algunos casos es:

SELECT * FROM permisos
WHERE permiso_desde BETWEEN 'fecha inicio rango ingresado' AND 'fecha final rango ingresado'
OR permiso_hasta BETWEEN ' fecha inicio rango ingresado' AND 'fecha final rango ingresado'

De antemano gracias
  #2 (permalink)  
Antiguo 03/07/2014, 14:11
 
Fecha de Ingreso: abril-2013
Ubicación: Barcelona
Mensajes: 78
Antigüedad: 11 años
Puntos: 2
Respuesta: Problemas para filtrar fechas que comienzan y terminan fuera del rango ing

No termine de entender muy bien lo que te pasa.
Si lo guardaste como DATE lo que tienes es un numero guardado.
¿As probado a usar operadores lógicos (<=>)?
  #3 (permalink)  
Antiguo 03/07/2014, 15:10
Avatar de wizanchez  
Fecha de Ingreso: junio-2013
Ubicación: bogota
Mensajes: 120
Antigüedad: 10 años, 10 meses
Puntos: 6
Respuesta: Problemas para filtrar fechas que comienzan y terminan fuera del rango ing

seria algo asi



SELECT
*
FROM
permisos
WHERE
permiso_desde>="FECHA DESDE"
AND permiso_hasta<="FECHA HASTA"
__________________
---------
cubesoftechnology.com
Wizanchez,,
  #4 (permalink)  
Antiguo 03/07/2014, 16:29
 
Fecha de Ingreso: febrero-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Problemas para filtrar fechas que comienzan y terminan fuera del rango ing

Gracias por responder...Eso fue lo primero que probé y me funcionó solo con permisos que fueron solicitados dentro del rango de fechas ingresado...luego implementé el between buscando un resultado distinto pero el resultado fue el mismo.

El problema como comenté anteriormente sucede cuando por ejemplo alguien sale con vacaciones desde el 1 al 30 de julio...si al sistema le pregunto quien esta ausente entre el 10 y el 20 de julio, ésta persona aparece como presente ya que la fecha de inicio de sus vacaciones es menor y no mayor que la fecha de inicio del rango que consulté.....lo mismo pasa con la fecha de término de sus vacaciones es mayor y no menor a la fecha de término del rango que consulto.....osea que seria :

SELECT * FROM permisos
WHERE permiso_desde<="FECHA DESDE"
AND permiso_hasta>="FECHA HASTA"

el problema es este select hace lo contrario a lo que necesito....
  #5 (permalink)  
Antiguo 04/07/2014, 00:39
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Problemas para filtrar fechas que comienzan y terminan fuera del rango ing

Tienes que montar una condicion tal que:

permiso desde between FECHA_DESDE && FECHA_HASTA
permiso hasta between FECHA_DESDE && FECHA_HASTA
permiso desde <= FECHA_DESDE && permiso hasta >= FECHA_HASTA

Con esto sacarias los registros que
1) empiecen sus vacaciones dentro del rango
2) terminen sus vacaciones dentro del rango
3) Empiecen y acaben antes y despues del rango

Espero que te sirva ;)
Saludos
__________________
>> Eleazan's Source
>> @Eleazan
  #6 (permalink)  
Antiguo 04/07/2014, 08:58
 
Fecha de Ingreso: febrero-2007
Mensajes: 5
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Problemas para filtrar fechas que comienzan y terminan fuera del rango ing

Gracias Eleazan, probando lo que sugeriste finalmente me resultó. Cuando ingreso una fecha que comienza antes y finaliza después del rango de consulta ingresado esta instrucción me funcionó tal cual lo necesitaba:

SELECT * FROM permisos
WHERE permiso_desde BETWEEN '$desde' AND '$hasta'
OR permiso_hasta BETWEEN '$desde' AND '$hasta'
OR permiso_desde <= '$desde' AND permiso_hasta >= '$hasta';

Gracias a todos por su ayuda..

Etiquetas: fecha, filtrar, fuera, rango, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:03.