Comment : |
Langages disponibles : reporting, Maintain
La fonction DATEADD sert à ajouter ou à supprimer une unité dans un format de date de composant complet. L'unité peut être l'un des éléments suivants :
DATEADD nécessite une date pour être au format de date. Puisque le Gestionnaire de dialogue interprète une date comme alphanumérique ou numérique, et que DATEADD nécessite une date standard stockée comme décalage de la date de base, n'utilisez pas DATEADD 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.
Pour plus d'informations, consultez Appeler une fonction à partir d'une commande Dialog Manager.
Vous ajoutez ou supprimez des dates sans jours (par exemple, YM ou YQ) directement sans utiliser DATEADD.
DATEADD ne fonctionne qu'avec les composants de date complets.
DATEADD(date, 'component', increment)
où :
Date
est une date de composant complète.
Alphanumérique
est l'une des unités suivantes entourés par des guillemets simples :
'Y' représente un composant année.
'M' signale un composant de mois.
'D' signale un composant de jour.
'WD' signale un composant de jour de la semaine.
'BD' signale un composant de jour de travail.
Entier
est le nombre d'unités de date ajoutées à ou soustraites de date. Si ce nombre n'est pas une unité complète, elle est arrondie au chiffre inférieure.
Remarque : DATEADD n'utilise pas d'argument de sortie. Utilise le format de l'argument date pour le résultat. Pourvu que le résulat est une date de composant entière, il peut être affecté qu'à un champ de date composant entier
Le nombre d'unités transmises à DATEADD est toujours une unité entière. Par exemple
DATEADD(DATE, 'M', 1.999)
ajouter un mois puisque le nombre d'unités est inférieur à deux.
Si vous utilisez l'unité Jour de semaine et Samedi ou Dimanche comme date de saisie, DATEADD change la date de saisie à Lundi. La fonction
DATEADD('910623', 'WD', 1)
dans laquelle DATE est soit Samedi ou Dimanche donne Mardi, Samedi et Dimanche ne sont pas des jours de la semaine, par conséquent, DATEADD commence avec Lundi et ajoute en un.
Notez que le guillemet simple autour du nombre dans le premier argument, '910623' le mène à être considéré comme littéral de date naturel.
DATEADD ajoute trois jours de la semaine à NEW_DATE. Dans certains cas, on ajoute plus que trois jours, car HIRE_DATE_PLUS_THREE peut être sinon en fin de semaine.
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
La sortie est :
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 détermine quelles valeurs dans le champ TRANSDATE ne représentent pas des jours de travail en ajoutant zéro jour à TRANSDATE avec l'unité de jour ouvrable. Si TRANSDATE ne représente par un jour ouvrable, DATEADD renvoie le prochain jour ouvrable à DATEX. TRANSDATE est ensuite comparé à DATEX, et le jour de la semaine est imprimé pour toutes les dates qui ne correspondent pas entre les deux champs, entraînant comme résultat une liste composée entièrement de jours non travaillés.
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
La sortie est :
Date Day of Week ---- ----------- 91/06/22 SATURDAY 91/06/23 SUNDAY 91/06/30 SUNDAY
DATEADD ajoute des mois au champ DATE1 :
MAINTAIN
compute DATE1/yymd = '20000101'
compute DATE2/yymd=dateadd(date1, 'M', 2, date2);
type "DATE1 = <<DATE1 + 2 MONTHS = DATE2 = <<DATE2"
END
Le résultat est :
DATE1 = 2000/01/01+ 2 MONTHS = DATE2 = 2000/03/01
WebFOCUS |