DATEDIF: Ricerca della differenza tra due date

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:

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.


Inizio pagina

x
Sintassi: Come trovare la differenza tra due date
DATEDIF(from_date, to_date, 'component')

dove:

from_date

Data

Data di inizio dalla quale calcolare la differenza. Un componente completo data.

to_date

Data

Data di fine dalla quale calcolare la differenza.

componente

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'.



Esempio: Troncamento con DATEDIFF

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')


Esempio: Uso dei calcoli mesi

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.



Esempio: Ricerca del numero dei giorni della settimana tra due date (Reporting)

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


Esempio: Ricerca del numero dei giorni della settimana tra due date (Maintain)

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