Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ralizar un filtro entre fechas... (https://www.clubdelphi.com/foros/showthread.php?t=60476)

JoysticK 03-10-2008 12:07:30

Ralizar un filtro entre fechas...
 
Hola amigos, seguramente esta respuesta estara en el foro pero llevo ya un rato buscando y no consigo encontrarla, el problema es el suguiente, tengo una tabla de historico con dos campos uno de fecha de entrada y otro de fecha de salida, la cosa es que quiero saber que articulos estaban en existencias entre dos fechas y no me aclaro para plasmarlo en sql, porque si por ejemplo, un articulo estubo en existencia desde el dia 01.09 hasta el 30.09, y quiero realizar un filtrado con los articulos que habia en existencia entre el 15.09 y el 18.09, como puedo esto traducirlo a lenguaje SQL ?

porque fentrada >= entrada ( 01.09 >= 15.09 ) => False

o fsalida <= salida ( 18.09 <= 20.09 ) => False

La verdad no se ahora mismo como plantearlo, ¿ podriais ayudarme con este query ?

Neftali [Germán.Estévez] 03-10-2008 13:12:44

Cita:

Empezado por JoysticK (Mensaje 317880)
...quiero realizar un filtrado con los articulos que habia en existencia entre el 15.09 y el 18.09

Código SQL [-]
   ... WHERE (FECHA >= '20080915' AND FECHA <= '20080918')

Segun la Base de Datos puede cambiar el sistema de fechas.
Ten en cuenta que an algunas es dd/mm y en otras mm/dd
Por último revisa ejemplos del BETWEEN.

duilioisola 03-10-2008 14:02:24

creo que lo que necesitas es idéntico a este hilo.

Lo que pedía shoulder era ver el ausentismo en un período.
Parecido a lo que preguntas tu.

Esta fue mi respuesta (Firebird):
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)

JoysticK 03-10-2008 14:33:48

Gracias duilioisola, creo que es exactamente lo que estaba buscando, el parametro "union" no lo he utilizado antes, voy a ver si termino de comprender el funcionamiento y lo aplico a mis tablas.


Neftali, revisa el post que he expuesto pues en la solución que me expones tiene un gran fallo de base, si el articulo entro en almacen el dia 1 de Setiembre y salio del almacen el dia 30 de Septiembre y en el filtro le indico

Where entrada >= 15/09/08 and salida <= 18/09/08 pues no me mostraria ese registro aunque si estaba en el almacen...

Neftali [Germán.Estévez] 03-10-2008 14:52:47

No acabé de entender bien lo que necesitbas...

JoysticK 03-10-2008 15:15:18

Bueno, la intención es lo que cuenta, grácias de todas formas :D


La franja horaria es GMT +2. Ahora son las 07:10:35.

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