DATEDIF : Rechercher la différence entre deux dates

Comment :

Langages disponibles : reporting, Maintain

La fonction DATEDIF renvoie la différence entre deux dates complètes standards de composant en unités d'un composant spécifié. L'unité peut être l'un des éléments suivants :

DATEDIF renvoie un nombre entier. Si la différence entre deux dates n'est pas un nombre entier, DATEDIF tronque la valeur au nombre entier supérieur. Par exemple, le nombre d'années entre le 2 mars 2001 et le 1er mars 2002, est zéro. Si la date de fin se situe devant la date de début, DATEDIF renvoie un nombre négatif.

Vous pouvez trouver directement la différence entre les dates sans valeur de jour (par exemple, YM ou YQ) à l'aide de la fonction DATEDIF.

Puisque le Gestionnaire de dialogue interprète une date comme alphanumérique ou numérique, et que DATEDIF nécessite une date standard stockée comme décalage de la date de base, n'utilisez pas DATEDIF avec le Gestionnaire de dialogue à moins que vous ne convertissiez d'abord la variable comme date de saisie à un décalage à partir de la date de base.

DATEMOV ne fonctionne qu'avec les composants de date remplis.


Haut de page

x
Syntaxe : Rechercher de la différence entre deux dates
DATEDIF(from_date, to_date, 'component')

où :

from_date

Date

La date de début avec laquelle la différence est calculée. est une date de composant complète.

to_date

Date

La date de début avec laquelle la différence est calculée.

component

Alphanumérique

est l'une des unités suivantes entourés par des guillemets simples :

Y représente une unité d'année.

M représente une unité de mois.

D représente une unité de jour.

WD représente une unité de jour de la semaine

BD représente une unité de jour ouvrable.

Remarque : DATEDIF n'utilise pas un argument de sortie en raison du résultat, il utilise le format 'I8'.



Exemple : Truncation avec DATEDIF

DATEDIF calcule la différence entre le 2 Mars 1996 et le 1er Mars 1997, et renvoie un zéro parce que la différence est inférieure à un an :

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


Exemple : Utiliser les calculs de mois

Les expressions suivantes renvoient un résultat de moins un mois :

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

Exemples supplémentaires :

DATEDIF( 'March 31 2001', 'May 31 2001', 'M') donne 2.

DATEDIF( 'March 31 2001', 'May 30 2001', 'M') donne 1 (parce que le 30 mai n'est pas la fin du mois).

DATEDIF( 'March 31 2001', 'April 30 2001', 'M') donne 1.



Exemple : Rechercher le nombre de jours de semaine entre deux dates (Reporting)

DATECVT convertit les dates patrimoniales de HIRE_DATE et DAT_INC en format YYMD. DATEDIF utilise ensuite ces formats de date pour déterminer le nombre de jours de semaine entre NEW_HIRE_DATE et 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 sortie est :

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


Exemple : Rechercher le nombre de jours de semaine entre deux dates (Maintain)

DATEDIF détermine le nombre d'années entre DATE2 et 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

Le résultat est :

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

Information Builders