DATEADD: Aggiungere o sottrarre una unità data a o da una data

Come:

Lingue disponibili: reporting, Maintain

La funzione DATEADD aggiunge una unità a o sottrae una unità da un formato data componente completo. Una unità è uno dei seguenti:

DATEADD richiede una data nel formato data. Poiché Dialogue Manager interpreta una data come alfanumerica o numerica e DATEADD richiede una data standard memorizzata come offset dalla data di base, non usare DATEADD con Dialogue Manager, a meno che non si converte prima la variabile usata come data di emissione ad un offset dalla data di base.

Si aggiunge o sottrae date non basate sul giorno (per esempio, YM o YQ) direttamente senza utilizzare DATEADD.

DATEADD funziona solo con componenti completi di date.


Inizio pagina

x
Sintassi: Come aggiungere o sottrarre un’unità data a o da una data
DATEADD(date, 'component', increment)

dove:

data

Data

Un componente completo data.

componente

Alfanumerico

Uno dei seguenti racchiuso tra virgolette singole:

Y indica una componente anno.

M indica una componente mese.

D indica una componente giorno.

WD indica una componente giorno feriale.

BD indica una componente giorno lavorativo.

incrementazione

Valore intero

Il numero di unità date aggiunte o sottratte dalla data. Se questo numero non è un’unità intera, è arrotondato per difetto al numero intero più prossimo".

Nota: DATEADD non usa un argomento di emissione. Usa il formato dell'argomento data per il risultato. Purché il risultato sia una data componente completo, è possibile assegnarla solo ad un campo data componente completo, o ad un campo intero.



Esempio: Troncamento con DATEADD

Il numero di unità inoltrato a DATEADD è sempre una unità intera. Ad esempio

DATEADD(DATE, 'M', 1.999)

aggiunge un mese, poiché il numero di unità è inferiore a due.



Esempio: Uso dell'unità giorno della settimana

Se si usa l'unità giorno della settimana e Sabato o Domenica è la data di immissione, DATEADD modifica la data di immissione a Lunedì. La funzione

DATEADD('910623', 'WD', 1)

in cui DATE è o Sabato o Domenica risulta in Martedì; Sabato e Domenica non sono giorni della settimana, quindi DATEADD inizia con Lunedì e aggiunge uno.

Notare che le virgolette singole intorno al numero del primo argomento, ‘910623’, portano al suo trattamento come valore letterale data naturale.



Esempio: Aggiunta dei giorni della settimana ad una data (Reporting)

DATEADD aggiunge tre giorni della settimana a NEW_DATE. In alcuni casi, questa funzione aggiunge più di tre giorni, poiché HIRE_DATE_PLUS_THREE sarebbe, altrimenti, nel fine settimana.

TABLE FILE EMPLOYEE
PRINT FIRST_NAME AND HIRE_DATE AND COMPUTE
NEW_DATE/YYMD = HIRE_DATE;
HIRE_DATE_PLUS_THREE/YYMD = DATEADD(NEW_DATE, 'WD', 3);
BY LAST_NAME
WHERE DEPARTMENT EQ 'MIS';
END

L'emissione è:

LAST_NAME     FIRST_NAME  HIRE_DATE  NEW_DATE    HIRE_DATE_PLUS_THREE
---------     ----------  ---------  --------    --------------------
BLACKWOOD     ROSEMARIE    82/04/01  1982/04/01  1982/04/06
CROSS         BARBARA      81/11/02  1981/11/02  1981/11/05
GREENSPAN     MARY         82/04/01  1982/04/01  1982/04/06
JONES         DIANE        82/05/01  1982/05/01  1982/05/06
MCCOY         JOHN         81/07/01  1981/07/01  1981/07/06
SMITH         MARY         81/07/01  1981/07/01  1981/07/06


Esempio: Determinazione se una data è un giorno lavorativo (Reporting)

DATEADD determina quali valori nel campo TRANSDATE non rappresentano giorni lavorativi, aggiungendo giorni zero a TRANSDATE usando l'unità giorni lavorativi. Se TRANSDATE non rappresenta un giorno lavorativo, DATEADD restituisce il prossimo giorno lavorativo a DATEX. Si paragona, quindi, TRANSDATE a DATEX e si stampa il giorno della settimana per tutte le date che non corrispondono tra i due campi, risultando in un elenco di tutti i giorni non lavorativi.

DEFINE FILE VIDEOTRK
DATEX/YMD  = DATEADD(TRANSDATE, 'BD', 0);
DATEINT/I8YYMD = DATECVT(TRANSDATE, 'YMD','I8YYMD');
END
TABLE FILE VIDEOTRK
SUM TRANSDATE NOPRINT
COMPUTE DAYNAME/A8 = DOWKL(DATEINT, DAYNAME); AS 'Day of Week'
BY TRANSDATE AS 'Date'
WHERE TRANSDATE NE DATEX
END

L'emissione è:

Date      Day of Week 
----      ----------- 
91/06/22  SATURDAY
91/06/23  SUNDAY
91/06/30  SUNDAY


Esempio: Aggiunta di mesi ad una data (Maintain)

DATEADD aggiunge mesi al campo DATE1:

MAINTAIN
compute DATE1/yymd = '20000101'
compute DATE2/yymd=dateadd(date1, 'M', 2, date2);
type "DATE1 = <<DATE1 + 2 MONTHS =  DATE2 = <<DATE2"
END

Il risultato è:

DATE1 = 2000/01/01+ 2 MONTHS =  DATE2 = 2000/03/01

WebFOCUS