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.
DATEADD(date, 'component', increment)
dove:
Data
Un componente completo data.
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.
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.
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.
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.
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
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
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 |