Comparar fechas y almacenar diferencia entre estas

Estaba realizando una base de datos que contiene ordenes de procesos para distintos equipos, ahora busco establecer el tiempo medio entre proceso TEP para ello cree una Consulta_TEPque explicare más adelante.

Lo primero es saber que es el TEP, es el tiempo que transcurre entre un evento y otro, en la imagen de a continuación se ve representado por la sigla MTBF para ello se debe compara la fecha de Ffin y Fin de un proceso con la Fini y Hini del próximo proceso. (solo considerando los procesos Clas = "C2")

Mi idea es que la consulta lo registre por equipo de la siguiente manera
Equipo Cantidad TEP TMEP

LHD 308 6 115 23

LHD 320 1 0 0

LHD 413 4 71 23,66

El TMEP es el Tiempo Promedio ente Procesos y se calcula así

TMEP : SiInm( ([Cantidad]<2),(0),([TEP]/([Cantidad]-1)) )

Mi idea es que para TEP también ocurra la condicionante de que si se encuentran menos de 2 datos se ocupe el valor 0.

Acá les dejo una BD la cual contiene los datos y las consultas a medias, la <strong style="line-height: 1.5em;">Consulta_TEP<em style="line-height: 1.5em;"> pide como entrada una fecha inicial y una final, la cuales pueden ser agregadas desde el formulario_total yo probé con Fini :05-05-2014 y Ffin: 11-05-2014

para tomar el total de datos.

http://www.filebig.net/files/y4rv7SkZte

como les decía anteriormente la idea del campo TEP tiene la siguiente lógica
desde Fini = xx-xx-xx, hasta Ffin = yy-yy-yy

if (cantidad <2)

TEP = 0

else

DifFecha = Busca la diferencia entre Ffin(n) y Fini(n+1)
TEP = TEP + DifFecha

Ejemplo ilustrativo:

Fini Fini(1) Ffin(1) Fini(2) Ffin(2) Fini(3) Ffin(3) Ffin

Otra aclaración, la Fini y Ffin que están en negrita en la linea de tiempo son las Fechas que indican el rango a comparar, la Fini(1) no sirve para la comparación, pero si Ffin(1), que el primer fragmento guardado es el entre Ffin(1) y Fini(2), luego entre Ffin(2) y Fini(3), el segmento entre Ffin(3) y Ffin tampoco sirve para la comparación. Bajo esta lógica solo se almacenan en TEP los intervalos subrayados :

Ffin(1) Fini(2)

Ffin(2) Fini(3)

No se si es conveniente hacerlo en un modulo de visual o si se puede lograr con consultas. Si la opción es visual no se como almacenar en variables los datos y como dejar fuera los intervalos que no necesito.

Otra idea es guardar en otra variable solo los intervalos los cuales supuestamente no me sirven y realizar los siguiente:

TEP = ( Ffin - Fini ) - ( Fini(1) - Fini ) - (Ffin - Ffin(3)) - Suma([Dur])

Esta segunda lógica seria mas sencilla para comparar mayor cantidad de datos ya que solo interesan 3 intervalos y Suma([Dur]) es fácil de calcular.

Cualquier ayuda sirve.

1 Respuesta

Respuesta
1

Para resolver esto use matemáticas simples, no pude idear un algoritmo para resolverlo, pero encontré la fórmula matemática equivalente.
La lógica es la siguiente:
En la línea de tiempo tenemos como Tiempo Total (TT) la diferencia de las fechas ingresadas (Ffin-Fini)
Lo cual es equivalente al TEP + el trozo de tiempo que hay desde el inicio a la primero ocurrencia (CI) y el desde la ultima ocurrencia hasta el final (CF) + el tiempo de las paradas Fini(1) Ffin(1) y así sucesivamente.
Para CI utilice la función Mínimo, que me busco la primera Fini (Fini(1)) y con diff fecha saque la diferencia entre la fecha a consultar y la primera ocurrencia.
Para CF la misma lógica pero con la función Máximo y Ffin, que me busca la Ffin(n).
Para los tiempos de parada creé una variable de nombre Dur la cual es la resta de (Ffin(i)-Fini(i)), cuando fue > que cero además la variable Cant sumaba 1
Y TT la diferencia de las fechas a consultar.
Entonces tenemos lo siguiente
TT = TEP + CI + CF + Suma (Dur)
TEP = TT - CI - CF - Suma (Dur)
con esto y la variable Cant tenemos:
TMEP = TEP/(Cant -1)
Y así resolví el problema, teniendo en cuenta que la función agrupaba por equipo pude obtener lo siguiente:

Equipo Cantidad TEP TMEP

LHD 308        6       115    23

LHD 320        1    (Total Tiempo consultado)
LHD 413        4        71   23,66

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas