Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Campos Fechas, ayuda!!! (https://www.clubdelphi.com/foros/showthread.php?t=59017)

shoulder 09-08-2008 16:45:38

Campos Fechas, ayuda!!!
 
Tengo una Gran duda y no se como hacerlo, guardo en una tabla por personas ausentismos con una fecha desde y hasta (eje. Persona xx del 10/7/2008 al 02/08/2008), me estan pidiendo hacer un listado entre dos fechas, o sea saber que personas faltaron entre el 18/07 al 20/07. O sea que me tendria que traer en el informe a esta persona xx pero solo dieciendo tres dias, no tomando todo el periodo de su ausencia. Se puede hacer directamente todo en un select o tengo que progranar todo dentro de un do while?-

Gracias

hecospina 09-08-2008 16:59:01

Esta como poco clara la descripcion del problema

de todos modos puedes restar las fechas
ejm
Código SQL [-]
select empleado,fecha_final-fecha_incial as dias from tabla


si por cada dia de ausencia creas un registro podrias aserlo de esta forma

Código SQL [-]
select empleado, count(distinct fecha) from tabla group by empleado

Recuerda entre mas claro el problema mas rapido te pueden dar la solucion
:eek:

felipe88 09-08-2008 17:02:08

Hola,

En el blog de nuestro amigo [enecumene] esta este articulo para trabajar con fechas desde SQL. La otra opcion seria que restaras las fechas
Código Delphi [-]
fecha := fecha1 - fecha2
creando una variable TDatetime.

shoulder 09-08-2008 19:31:40

problemas fechas
 
Primero Gracias por todo. Para ser mas claro, tengo una tabla con registros donde guardo, documento, fecha_desde, fecha_hasta, o sea '12344', 02/07/2008, 30/08/2008.
Guardo por periodo de ausentismo no dia por dia.
El tema que me piden hacer listados con fechas desde - hasta.
Ejemplo. Un listado de personas que faltaron entre el 05/07/2008 al 07/072008, o sea que tendria que aparecer el ejemplo enunciado anteriormente de la tabla como que falto esos tres dias la persona.
No se como encararlo en el where y si pudiera hacer los calculos dentro del select, para que no me salga en el listado dia desde 02/07, sino 05/07, porque tendria que evaluar que en el listado a pedir me pueden solicitar cualquier periodo y fijarme si la persona falto dentro de esos rangos y que dias entran en ese rango.

Gracias por sus respuestas

duilioisola 09-08-2008 22:00:18

Creo que esto resuelve tu cuestión.
Es la unión de varias consultas parciales.
En el caso de no estar de baja todo el período pedido, se devuelve la fecha_desde o fecha_hasta en que se inició o finalizó la baja.
En el caso de que la fecha de baja/alta esté fuera del período, se devuelve la fecha pedida como parámetro.
Código SQL [-]
/* periodo pedido: desde 10/08/2008 hasta 15/08/2008 */
/* Los que faltaron todo el período */
/* (ejemplo: 01/08/2008 - 31/08/2008) */
select persona,:desde,:hasta from tabla_ausentismo 
where
(fecha_desde <= :desde) and
(fecha_hasta >= :hasta)
union
/* Los que faltaron una vez empezado el período */
/* (ejemplo: 12/08/2008 - 31/08/2008) */
select persona,fecha_desde,:hasta from tabla_ausentismo 
where
(fecha_desde >= :desde) and
(fecha_desde <= :hasta) and
(fecha_hasta >= :hasta)
union
/* Los que faltaron y volvieron antes de terminar el período */
/* (ejemplo: 01/08/2008 - 12/08/2008) */
select persona,:desde,fecha_hasta from tabla_ausentismo 
where
(fecha_desde <= :desde) and
(fecha_hasta >= :desde) and
(fecha_hasta <= :hasta)
union
/* Los que faltaron solo unos dias dentro el período */
/* (ejemplo: 13/08/2008 - 14/08/2008) */
select persona,fecha_desde,fecha_hasta from tabla_ausentismo 
where
(fecha_desde >= :desde) and
(fecha_desde <= :hasta) and
(fecha_hasta >= :desde) and
(fecha_hasta <= :hasta)

shoulder 09-08-2008 22:20:19

Fechas problemas!!!
 
Mil gracias, el unico tema que me tendria que devolver la fecha en que realmente falto, los where que me hiciste estan excelente, creo que despues tendria que calcular en el select que me traiga el dia dentro de ese peripdo, o sea si mi registro dice del 01/07 al 25/07 y me piden un listado del 19 al 20 de julio que me traiga nada mas en el listado esos dos dias.

duilioisola 11-08-2008 08:00:02

Estos campos subrayados son los parámetros que le pasas, por lo que te devolverá exactamente lo que pides.
Código SQL [-]
select persona,:desde,:hasta from tabla_ausentismo 
where
...
union
/* Los que faltaron una vez empezado el período */
select persona,fecha_desde,:hasta from tabla_ausentismo 
...
union
/* Los que faltaron y volvieron antes de terminar el período */
select persona,:desde,fecha_hasta from tabla_ausentismo 
...
union
/* Los que faltaron solo unos dias dentro el período */
select persona,fecha_desde,fecha_hasta from tabla_ausentismo 
...

shoulder 13-08-2008 15:43:57

Fechas
 
Gracias a todos, por la ayuda de ustedes tema solucionado.


La franja horaria es GMT +2. Ahora son las 16:04:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi