Come: |
Lingue disponibili: reporting, Maintain
La funzione DATEDIF restituisce la differenza tra due date standard di componente completo in unità di un componente specifico. Un componente è uno dei seguenti:
Se una o entrambe le date d'immissione sono la fine del mese, DATEDIF lo prende in considerazione. Questo significa che la differenza tra il 31 Gennaio e il 30 Aprile è tre mesi, non due mesi.
DATEDIF restituisce un numero intero. Se la differenza tra due date non è un numero intero, DATEDIF tronca il valore al prossimo valore intero più grande. Per esempio, il numero di anno tra il 2 Marzo 2001 e il 1 Marzo 2001 è zero. Se la data finale è precedente alla data iniziale, DATEDIF restituisce un numero negativo.
È possibile trovare la differenza tra date non basate sul giorno (per esempio YM o YQ) direttamente senza utilizzare DATEDIF.
Poiché Dialogue Manger interpreta una data come valore alfanumerico o numerico e DATEDIF richiede una data standard memorizzata come un offset dalla data di base, non usare DAFEDIF con Dialogue Manager, a meno che non si converte prima la variabile usata come data di immissione ad un offset dalla data di base.
DATEDIF funziona solo con componenti completi di date.
DATEDIF(from_date, to_date, 'component')
dove:
Data
Data di inizio dalla quale calcolare la differenza. Un componente completo data.
Data
Data di fine dalla quale calcolare la differenza.
Alfanumerico
Uno dei seguenti racchiuso tra virgolette singole:
Y indica una unità anno.
M indica una unità mese.
D indica una unità giorno.
WD indica una unità giorno feriale.
BD indica una unità giorno lavorativo.
Nota: DATEDIF non usa un argomento di emissione poiché per il risultato usa il formato 'I8'.
DATEDIF calcola la differenza tra 2 Marzo 1996 e 1 Marzo 1997 e restituisce uno zero, poiché la differenza è inferiore ad un anno:
DATEDIF('19960302', '19970301', 'Y')
Le seguenti espressioni restituiscono un risultato di meno un mese:
DATEDIF('19990228', '19990128', 'M') DATEDIF('19990228', '19990129', 'M') DATEDIF('19990228', '19990130', 'M') DATEDIF('19990228', '19990131', 'M')
Esempi ulteriori:
DATEDIF( '31 Marzo 2001', '31 Maggio 2001', 'M') ottiene 2.
DATEDIF( '31 Marzo 2001', '30 Maggio 2001', 'M') ottiene 1 (poiché il 30 Maggio non è la fine del mese).
DATEDIF( '31 Marzo 2001', '30 Aprile 2001', 'M') ottiene 1.
DATECVT converte le date legacy in HIRE_DATE e DAT_INC nel formato data YYMD. DATEDIF quindi utilizza questi formati data per determinare il numero dei giorni della settimana tra NEW_HIRE_DATE e 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
L'emissione è:
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 determina il numero di anni tra DATE2 e 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
Il risultato è:
2002/07/17 - 1988/07/05 = 14 YEARS
WebFOCUS |