martes, 13 de junio de 2023

Diferencia o resta entre dos fechas

este ejemplo veremos como restar dos fechas que ingresan por parámetro, para obtener la cantidad de días como resultado.

Pasemos a lo parámetros...

Rules:

parm(in:&DFechaFin, in:&DFechaInicio, out:&NTotalDias, out:&NAnios, out:&NMes, out:&NDias); 

Variables:

&DFechaAuxiliar de tipo Date
&DFechaProximoMes de tipo Date
&DFechaFin de tipo Date
&DFechaInicio de tipo Date
&NTotalDias de tipo Numeric (10)
&NAnios de tipo Numeric (4) En 
&NMes de tipo Numeric (2)
&NDias de tipo Numeric (2)

Source:

&NTotalDias = &DFechaFin - &DFechaInicio
&NAnios = 0
&NMeses = 0
&NDias = 0

if &NTotalDias > 29 
    &DFechaAuxiliar = &DFechaInicio
    &DFechaProximoMes = &DFechaInicio // Años
    do while &DFechaProximoMes <= &DFechaFin
        &DFechaProximoMes = AddYr(&DFechaAuxiliar, 1)
        if &DFechaProximoMes <= &DFechaFin
            &NAnios += 1
            &DFechaAuxiliar = &DFechaProximoMes
        endif
    enddo

    &DFechaProximoMes =&DFechaAuxiliar // Meses
    do while &DFechaProximoMes <= &DFechaFin
      &DFechaProximoMes = AddMth(&DFechaAuxiliar, 1)
      if &DFechaProximoMes <= &DFechaFin
        &NMeses += 1
        &DFechaAuxiliar = &DFechaProximoMes
      endif
    enddo
    &NDias = &DFechaFin- &DFechaAuxiliar
    if &NDias < 0
        &NDias = 0
    endif
else
        &NDias = &NTotalDias
endif

Como se puede apreciar es un sencillo procedimiento que se puede utilizar en donde se lo requiera dentro de nuestra KB. El nombre del mismo es a criterio de cada uno.

Como digo siempre se puede mejorar y cualquier crítica es bienvenida, siempre que sea constructiva.

No hay comentarios:

Publicar un comentario

Qué es un Queue!? ... en Clarion

Publicado por  EMoreno  el 11/01/2006 - LWP Hola que tal. Una QUEUE es una estructura en memoria. Puede ser de un campo hasta "n...