HDIFF: Cómo hallar el número de unidades entre dos valores de fecha-hora

Cómo:

Referencia:

Idiomas disponibles: informes, Maintain

La función HDIFF calcula el número de unidades del componente de fecha u hora entre dos valores de fecha-hora.


Principio de página

x
Referencia: Notas de uso de HDIFF

HDIFF realiza la sustracción de forma diferente a DATEDIF, que resta los componentes de fecha almacenados en campos de fecha. El cálculo de DATEDIF utiliza años o meses completos. Por tanto, al sustraerse las dos siguientes fechas y solicitar el número de meses o años, el resultado es de 0:

DATE1 12/25/2014, DATE2 1/5/2015   

Si se realiza el mismo cálculo utilizando HDIFF en campos de fecha-hora, el resultado es un valor de 1 mes o 1 año, ya que, en este caso, primero se efectúa la extracción del mes o año de cada valor de fecha-hora y, después, la sustracción.


Principio de página

x
Sintaxis: Cómo Hallar el número de unidades entre dos valores de fecha-hora
HDIFF(end_dt, start_dt, 'component', output)

donde:

end_dt

Fecha-hora

Es el valor de fecha-hora del que se va restar, el nombre del campo fecha-hora que contiene el valor o una expresión que devuelve el valor.

start_dt

Fecha-hora

Es el valor de fecha-hora que se va restar, el nombre del campo fecha-hora que contiene el valor o una expresión que devuelve el valor.

component

Alfanumérico

Es el nombre, entre comillas simples, del componente que se va a usar en el cálculo. Si el componente es una semana, el cálculo emplea la configuración de parámetro WEEKFIRST.

output

Punto flotante de doble precisión

Es el campo que contiene el resultado o el formato del valor de salida, entre comillas simples. El formato debe ser de punto flotante de doble precisión.



Ejemplo: Cómo hallar el número de días entre dos campos fecha-hora (Lenguaje de informes)

HDIFF calcula el número de días entre los campos TRANSDATE Y ADD_MONTH y guarda el resultado en DIFF_PAYS, con formato D12.2:

TABLE FILE VIDEOTR2
PRINT CUSTID TRANSDATE AS 'DATE-TIME' AND COMPUTE
ADD_MONTH/HYYMDS = HADD(TRANSDATE, 'MONTH', 2, 8, 'HYYMDS');
DIFF_DAYS/D12.2 = HDIFF(ADD_MONTH, TRANSDATE, 'DAY', 'D12.2');
WHERE DATE EQ 2000;
END

La salida es:

CUSTID  DATE-TIME         ADD_MONTH               DIFF_DAYS
------  ---------         ---------               ---------
1237    2000/02/05 03:30  2000/04/05 03:30:00     60.00
1118    2000/06/26 05:45  2000/08/26 05:45:00     61.00


Ejemplo: Cómo hallar el número de días entre dos campos fecha-hora (Maintain)

HDIFF calcula el número de días entre ADD_MONTH y DT1:

MAINTAIN FILE DATETIME
FOR 1 NEXT ID INTO STK;
COMPUTE
NEW_DATE/HYYMDS = HADD(STK.DT1, 'MONTH', 2,10, NEW_DATE);
DIFF_DAYS/D12.2 = HDIFF(NEW_DATE,STK.DT1,'DAY', DIFF_DAYS);
TYPE "STK(1).DT1 = "STK(1).DT1;
TYPE "NEW_DATE = "NEW_DATE;
TYPE "DIFF_DAYS = "DIFF_DAYS
END

WebFOCUS