Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ayuda a buscar fechas

Estas en el tema de Ayuda a buscar fechas en el foro de Programación General en Foros del Web. Hola a todos Espero me puedan ayudar Les cuento tengo una tabla con los siguientes campos fecha, entrada_salida; deseo saber que día que no se ...
  #1 (permalink)  
Antiguo 12/08/2008, 10:55
 
Fecha de Ingreso: agosto-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Ayuda a buscar fechas

Hola a todos
Espero me puedan ayudar

Les cuento tengo una tabla con los siguientes campos fecha, entrada_salida; deseo saber que día que no se registro (una falta) lo busco dentro del rango de una quincena.

Ya puedo comparar fechas y buscar en un rango de fechas lo único que me falta es saber que fecha no se registro en ese rango y la verdad no tengo idea de como hacerlo, alguien me puede dar una manita.
La tablas estan en oracle.

Se los agradezco mucho.
  #2 (permalink)  
Antiguo 12/08/2008, 12:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda a buscar fechas

Tema trasladado a Ingenieria del Software y Gestion de Proyectos.
  #3 (permalink)  
Antiguo 13/08/2008, 07:14
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años
Puntos: 2
Respuesta: Ayuda a buscar fechas

Mmm, si lo quieres hacer desde la base de datos no lo veo muy feliz. O sea, deberás hacer un query que te retorne todos los dias entre dos fechas(quizas podrias encapsularlo en una funcion), y luego filtrar esos dias por si estan o no en tu tabla de ingresos.

La idea del query de los dias es que le pases por ejemplo los parámetros:

1/1/08 y 4/1/08

y te retorne

1/1/08
2/1/08
3/1/08
4/1/08

Busca funciones para agregar dias a una fecha y creo que estas listo ;).

O sea, y todo esto te lo digo sin saber que lenguaje estas utilizando, el motor de base de datos, ni el contexto en el que quieres usar esto.
Seguramente hay soluciones mejores, mas expresivas, flexibles y robustas.
Y ademas yo lo haria con objetos :P.
__________________
Saludoss
Guille
  #4 (permalink)  
Antiguo 13/08/2008, 12:26
 
Fecha de Ingreso: agosto-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda a buscar fechas

Hola guille_el3

Algo así, pero la idea general es buscar en un rango de fechas y decir que fechas faltan en ese rango.
ejemplo 01/10/2007 al 05/10/2007
01/10/2007
02/10/2007
03/10/2007
05/10/2007
y por medio del query me diga que falta la fecha 04/10/2007 no se si eso sea posible.

Gracias.

Me estas dando mas ideas, es usted muy amable.
Perdón se me olvido decir que estoy programando en php y la base a consultar esta en oracle.
  #5 (permalink)  
Antiguo 14/08/2008, 12:00
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años
Puntos: 2
Respuesta: Ayuda a buscar fechas

justamente es lo que te dije, con el query que debe devolver tooodas las fechas en un rango, te fijas cuales de esas estan incluidas entre las asistencias...

O sea, si el rango es:

//Esto te lo retorna una funcion fechasEntreRango(fecha1,fecha2)
1/1/08
2/1/08
3/1/08
4/1/08

y las asistencias son

1/1/08
4/1/08

podrias hacer algo como:

select * from fechasEntreRango(fecha1,fecha2)
where not fecha in (... aca van las fechas de asistencia, con un subselect...)


suerte!
__________________
Saludoss
Guille
  #6 (permalink)  
Antiguo 16/08/2008, 10:24
 
Fecha de Ingreso: agosto-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda a buscar fechas

Ah!!!
Ok lo voy a probar para ver que mas me falta y gracias ya despues les contere como quedo.

Gracias Guille_el3
  #7 (permalink)  
Antiguo 08/10/2009, 08:48
 
Fecha de Ingreso: agosto-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda a buscar fechas

parece que ya resolvi el problema


esta seria mi solucion:

SELECT a.Fecha, b.MATRICULA, b.TARJETA, b.FECHA, b.ENTRADA, b.SALIDA, b.HORAENTRADA, b.HORASALIDA, b.NOMBRE_EMPL,b.RFC,b.CLAVE_CATEGORIA
FROM
(
select to_date('01 10 2007','DD MM YYYY')-1 + level as Fecha from dual
where (to_date('01 10 2007','DD MM YYYY')-1+level) <= last_day(to_date('16 10 2007','DD MM YYYY'))
connect by level<=round( to_date('16 10 2007','DD MM YYYY') - to_date('01 10 2007','DD MM YYYY') )
) A,
(
select DISTINCT A.MATRICULA, A.TARJETA,A.FECHA, B.CVE_EMPL, B.NOMBRE_EMPL,B.RFC,D.CLAVE_CATEGORIA,


max(CASE WHEN A.TIPO_MOV = 'B' THEN A.COMPLETO END) ENTRADA,
max(CASE WHEN A.TIPO_MOV = 'E' THEN A.COMPLETO END) SALIDA,
max(CASE WHEN A.TIPO_MOV = 'B' THEN A.HORA END) HORAENTRADA,
max(CASE WHEN A.TIPO_MOV = 'E' THEN A.HORA END) HORASALIDA

FROM ASIS_MOVTOS A, esquema1.tabla1 B, esquema1.tabla2 C, esquema1.tabla3 D
WHERE B.CVE_EMPL=A.MATRICULA AND
(B.CVE_EMPL=A.MATRICULA AND B.CVE_EMPL=C.CVE_EMPL and C.AREA_RESP=D.AREA_RESP AND C.CONSEC=D.CONSEC
AND B.NUM_QNA=C.NUM_QNA AND C.NUM_QNA=D.NUM_QNA AND B.NUM_QNA=D.NUM_QNA AND C.FECHA_FIN is null)

GROUP BY A.MATRICULA, A.TARJETA,A.FECHA,B.CVE_EMPL,B.NOMBRE_EMPL,B.RFC,
B.CVE_EMPL, B.NUM_QNA, C.NUM_QNA, C.AREA_RESP, C.CONSEC,C.FECHA_FIN,
D.NUM_QNA, D.ESTADO_PLAZA, D.CLAVE_CATEGORIA
ORDER BY A.MATRICULA ASC,A.FECHA ASC
) B
where A.FECHA = B.FECHA AND (((B.ENTRADA IS NULL OR B.SALIDA IS NULL))
OR (B.HORAENTRADA BETWEEN '08:31:00' AND '10:00:00' )
OR (B.HORASALIDA BETWEEN '15:31:00' AND '17:00:00'))
ORDER BY B.MATRICULA,A.FECHA
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 17:50.