DATEDIF: Cómo hallar la diferencia entre dos fechas

Cómo:

Idiomas disponibles: informes, Maintain

La función DATEDIF devuelve la diferencia entre dos fechas estándar de componente completo, en las unidades del componente especificado. Estos son los distintos tipos de componente:

DATEDIF devuelve un número entero. Si la diferencia entre dos fechas no es número entero, DATEDIF trunca el valor al mayor número entero más próximo. Por ejemplo, el número de años entre 2 de marzo de 2001 y 1 de marzo de 2002 es cero. Si la fecha final es anterior a la fecha inicial, DATEDIF devuelve un número negativo.

Se puede hallar la diferencia directamente entre dos fechas, que no estén basadas en días (por ejemplo, YM o YQ), sin usar DATEDIF.

Puesto que Dialogue Manager interpreta la fecha como alfanumérica o numérica, y DATEDIF requiere la presencia de una fecha estándar almacenada como desplazamiento de la fecha base, evite utilizar DATEDIF con Dialogue Manager, a menos que primero convierta la variable utilizada como fecha de entrada para un desplazamiento de la fecha base.

Para más información, consulte Cómo llamar a una función desde un comando de Dialogue Manager.

DATEDIF sólo funciona con fechas que incluyan todos los componentes.


Principio de página

x
Sintaxis: Cómo Hallar la diferencia entre dos fechas
DATEDIF(from_date, to_date, 'component')

donde:

from_date

Fecha

Es la fecha inicial con la que se calcula la diferencia. Es una fecha con todos los componentes.

to_date

Fecha

Es la fecha final con la que se calcula la diferencia.

component

Alfanumérico

Es una de las siguientes, entre comillas simples:

Y indica una unidad de año.

M indica una unidad de mes.

D indica la unidad de día.

WD indica la unidad de día de la semana.

BD indica la unidad de día laborable.

Nota: DATEDIF no usa un argumento output, ya que emplea el formato 'I8' para el resultado.



Ejemplo: Truncamiento con DATEDIF

DATEDIF calcula la diferencia entre Marzo 2, 1996 y Marzo 1, 1997, y devuelve un cero, ya que la diferencia es inferior a un año:

DATEDIF('19960302', '19970301', 'Y')


Ejemplo: Cómo usar cálculos de mes

Las siguientes expresiones devuelven un resultado de menos un mes:

DATEDIF('19990228', '19990128', 'M')
DATEDIF('19990228', '19990129', 'M')
DATEDIF('19990228', '19990130', 'M')
DATEDIF('19990228', '19990131', 'M')

Ejemplos adicionales:

DATEDIF( 'Marzo 31 2001', 'Mayo 31 2001', 'M') produce un 2.

DATEDIF( 'Marzo 31 2001', 'Mayo 30 2001', 'M') produce un 1 (Mayo 30 no es el final del mes).

DATEDIF( 'Marzo 31 2001', 'Abril 30 2001', 'M') produce un 1.



Ejemplo: Cómo hallar el número de días de la semana entre dos fechas (Lenguaje de informes)

DATECVT convierte las fechas legacy de HIRE_DATE y DATE_INC al formato de fecha YYMD. A continuación, DATEDIF usa esos formatos de fecha para determinar el número de días de la semana entre NEW_HIRE_DATE y NEW_DAT_INC:

TABLE FILE EMPLOYEE
PRINT FIRST_NAME AND
COMPUTE NEW_HIRE_DATE/YYMD = DATECVT(HIRE_DATE, 'I6YMD', 'YYMD'); AND
COMPUTE NEW_DAT_INC/YYMD = DATECVT(DAT_INC, 'I6YMD', 'YYMD'); AND
COMPUTE WDAYS_HIRED/I8 = DATEDIF(NEW_HIRE_DATE, NEW_DAT_INC, 'WD');
BY LAST_NAME
IF WDAYS_HIRED NE 0
WHERE DEPARTMENT EQ 'PRODUCTION';
END

La salida es:

LAST_NAME     FIRST_NAME  NEW_HIRE_DATE  NEW_DAT_INC  WDAYS_HIRED
---------     ----------  -------------  -----------  -----------
IRVING        JOAN        1982/01/04     1982/05/14   94
MCKNIGHT      ROGER       1982/02/02     1982/05/14   73
SMITH         RICHARD     1982/01/04     1982/05/14   94
STEVENS       ALFRED      1980/06/02     1982/01/01   414
              ALFRED      1980/06/02     1981/01/01   153


Ejemplo: Cómo hallar el número de años entre dos fechas (Maintain)

DATEDIF determina el número de años entre DATE2 y DATE1:

MAINTAIN 
Case Top
compute DATE1/yymd = '20020717';
compute DATE2/yymd = '19880705';
COmpute DIFF/I3= DATEDIF(DATE2, DATE1, 'Y', DIFF);
type "<<DATE1  -  <<DATE2  = <DIFF  YEARS"
ENDCASE
END

El resultado es:

2002/07/17 -  1988/07/05 = 14 YEARS

WebFOCUS