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 :
Si une ou les deux dates d'entrée sont de la fin du mois, DATEDIF en prend compte. Cela signifie que la différence entre le 31 janvier et le 30 avril est de trois mois, et non de deux mois.
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.
DATEDIF(from_date, to_date, 'component')
où :
Date
La date de début avec laquelle la différence est calculée. est une date de composant complète.
Date
La date de début avec laquelle la différence est calculée.
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'.
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')
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.
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
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 |