Création d'une expression de données

Dans cette section :

Une expression de date fait un calcul numérique impliquant des dates.

Une expression de date renvoie une date, un composant de date ou un nombre entier qui représente le nombre de jours, de mois, de trimèstres ou d'années entre deux dates. Vous pouvez écrire directement une expression de date qui se compose des éléments suivants :


Haut de page

x
Formats des valeurs de date

Référence :

Vous pouvez employer les dates de deux manières :

Vous pouvez convertir une date à un certain format en une date à un autre format en attribuant tout simplement un format à l'autre. Par exemple, les attributions suivantes prennent une date stockée en tant que champ alphanumérique, formatée avec les options de modification de date, et la convertissent en une date stockée en tant que champ de date temporaire :

COMPUTE ALPHADATE/A6MDY = '120599' ;
        REALDATE/MDY = ALPHADATE;


x
Référence : Dates de base pour les formats de date

Le tableau suivant montre la date de base pour chaque format de date supporté :

Format

Date de base

YMD, YYMD, MDYY, DMYY, MDY, and DMY

1900/12/31

YM, YYM, MYY, and MY

1901/01 sur z/OS

1900/12/31 sur Windows et UNIX

YQ, YYQ, QYY, and QY

1901 Q1

JUL and YYJUL

1900/365

D
M
Y, YY
Q
W

Il n'y a aucune date de base pour ces formats ; ce ne sont que des nombres et non pas des dates.

Notez que la date de base utilisée pour les fonctions DA et DT est le 31 décembre 1899. Pour plus de détails à propos des fonctions de date, consultez Utiliser les fonctions .



x
Référence : Impact des formats de date sur le stockage et l'affichage

La table suivante illustre la façon dont le format de champ influe sur le stockage et l'affichage :

 

Format date (par exemple, MDYY)

Nombre entier, Condensé, Décimal ou Alphanumérique (par exemple, A8MDYY)

Valeur

Stocké

Affichée

Stocké

Affichée

Février 28, 1999

35853

02/28/1999

02281999

02/28/1999

1 mars 1999

35854

03/01/1999

03011999

03/01/1999



x
Calcul des dates

Le format d'un champ détermine la façon dont vous pouvez utiliser le champ dans une expression de date. Le calcul des dates au format de date peut incorporer des opérateurs numériques ainsi que des fonctions numériques. Les calculs faits sur des dates aux formats entier, condensé, décimal ou alphanumérique requièrent l'utilisation de fonctions de date. Les opérateurs numériques renvoient un message d'erreur ou un résultat erroné.

Votre logiciel est muni d'un ensemble de fonctions qui vous permettent de manipuler les dates au format nombre entier, décimal condensé et alphanumérique. Pour plus de détails à propos des fonctions de date, consultez Utiliser les fonctions .



Exemple : Calcul des dates

Supposez que votre société gère une base de données de livraison (SHIPPING). L'exemple suivant calcule combien de jours il faut au département de livraison pour répondre à une commande en soustrayant la date de commande du produit, voire ORDER_DATE, de la date d'expédition, voire SHIPDATE :

COMPUTE TURNAROUND/I4 = SHIP_DATE - ORDER_DATE;

Un produit commandé le 28 février 1999, et livré le 1 mars 1999, a pour résultat un jour de différence. Cependant, si les champs SHIP_DATE et ORDER_DATE sont au format nombre entier, le résultat du calcul (730000) est faux, car vous ne pouvez par utiliser l'opérateur numérique moins

Le tableau suivant montre la façon dont le format de champ influence le résultat :

 

Valeur au format de date

Valeur au format entier

SHIP_DATE = March 1, 1999

35854

03011999

ORDER_DATE = February 28, 1999

35853

02281999

TURNAROUND

1

730000

Pour obtenir le résultat correcte en utilisant des champs au format nombre entier, condensé, décimal ou alphanumérique, utilisez la fonction de date MJA, qui renvoie la différence entre deux dates au format mois/jour/an. En utilisant la fonction MJA, vous pouvez calculer le champ TURNAROUND comme suit :

COMPUTE TURNAROUND/I4 = MDY(ORDER_DATE, SHIP_DATE);


x
Dates s'étendant sur deux siècles avec DEFINE et COMPUTE

Vous pouvez utiliser une expression dans une commande DEFINE ou COMPUTE, ou dans l'attribut DEFINE dans un fichier Master, qui emploie la technique de fenêtre dynamique pour le traitement des dates s'étendant sur deux siècles. Les paramètres DEFCENT et YRTHRESH fournissent un moyen d'interpréter le siècle si les deux premiers chiffres de l'année ne se trouvent pas ailleurs. Où les deux premiers chiffres sont fournis, ils sont simplement acceptés.

Pour plus de détails à propos de la technique de fenêtre dynamique, consultez Utilisation de dates s'étendant sur deux siècles dans la section supplémentaire de la documentation sur CD-rom de WebFOCUS.


Haut de page

x
Sélection de format des champ renvoyés

Une expression de date renvoie toujours un nombre. Ce nombre peut représenter une date, ou le nombre de jours, de mois, de trimèstres ou d'années entre deux dates. Lorsque vous utilisez une expression de date pour attribuer une valeur à un champ, le format sélectionné pour le champ détermine la façon dont le résultat est renvoyé.



Exemple : Sélection du format des champs renvoyés

Prenez en considération les commandes suivantes, en supposant que les champs SHIP_DATE and ORDER_DATE sont au format de date. La première commande calcule combien de jours il faut à un département de livraison pour répondre à une commande en soustrayant la date de commande du produit, voire ORDER_DATE, de la date d'expédition, voire SHIP_DATE. La deuxième commande calcule la date de livraison en ajoutant cinq jours à la date d'expédition.

COMPUTE TURNAROUND/I4 = SHIP_DATE - ORDER_DATE;
COMPUTE DELIVERY/MDY = SHIP_DATE + 5;

Dans la première commande, l'expression de date renvoie le nombre de jours il faut pour répondre à la commande. Le champ associé TURNAROUND, doit être donc au format nombre entier. Dans la deuxième commande, l'expression de date renvoie la date de livraison du produit. Le champ associé, DELIVERY, doit être donc au format de date.


Haut de page

x
Utilisation d'une constante de date dans une expression

Lorsque vous utilisez une constante de date dans un calcul avec un champ au format de date, vous devez entourer cette première de guillemets simples ; sinon, elle est interprétée comme le nombre de jours entre la constante et la date de base (le 31 décembre 1900 ou le 1 janvier 1901). Par exemple, si le nombre 022899 n'est pas entouré de guillemets, sa valeur est interprétée comme le 22899ième jour après le 31/12/1900, et non pas le 28 février 1999.



Exemple : Initialisation d'un champ avec une constante de date

La commande suivante initialise le champ START_DATE avec la constante de date 02/28/99 :

COMPUTE START_DATE/MDY = '022899';

La commande suivante calcule le nombre de jours écoulés depuis le 1 janvier 1999 :

COMPUTE YEAR_TO_DATE/I4 = CURR_DATE - 'JAN 1 1999' ;

Haut de page

x
Extraction d'un composant de date

Parmi les composants de date sont les jours, mois, trimestres et années. Vous pouvez écrire une expression qui extrait un composant d'un champ au format de date. Cependant, vous ne pouvez pas écrire une expression qui extrait des jours, mois ou trimèstres d'une date n'ayant pas ces composants. Par exemple, vous ne pouvez pas extraire un mois d'une date au format YY, qui représente seulement le nombre d'années.



Exemple : Extraction du composant « mois » d'une date

L'exemple suivant extrait le composant MONTH [mois] de SHIP_DATE, qui est au format MDYY : : extraction de composants ;

COMPUTE SHIP_MONTH/M = SHIP_DATE;

Si la valeur du champ SHIP_DATE est le 1 mars 1999, l'expression ci-dessus renvoie la valeur 03 pour SHIP_MONTH.

Un calcul d'un composant de date crée automatiquement une valeur valable pour le composant souhaité. Par exemple, si la valeur actuelle de SHIP_MONTH est 03, l'expression suivante renvoie correctement la valeur 06 :

COMPUTE ADD_THREE/M = SHIPMONTH + 3;

Si l'ajout de mois produit un nombre supérieur à douze, les mois sont réglés correctement (par exemple, 11 + 3 = 2, non pas 14).


Haut de page

x
Combinaison de champs à différents formats dans une expression

Lorsque vous utilisez des champs au format date, vous pouvez les combiner en une seule expression, même si leurs composants ne sont pas dans le même ordre. En plus, vous pouvez attribuer le résultat d'une expression de date à un champ ayant un autre ordre de composants à partir des champs dans l'expression.

Pourtant, vous ne pouvez pas écrire une expression combinant des dates au format de date et des dates au format nombre entier, condensé, décimal ou caractères.



Exemple : Combinaison de champs aux formats YYMD et MDY

Prenez en considération les deux champs DATE_PAID et DUE_DATE. DATE_PAID est au format AAMJ et DUE_DATE est au format MJA. Vous pouvez combiner ces deux champs dans une expression afin de calculer le nombre de jours de retard d'un paiement :

COMPUTE DAYS_LATE/I4 = DATE_PAID - DUE_DATE;


Exemple : Attribution d'un ordre de composants différent à un champ renvoyé

Prenez en considération le champ DATE_SOLD. Ce champ comprend une date à laquelle un produit est vendu, au format AAMJ. L'expression suivante ajoute sept jours au champ DATE_SOLD afin de déterminer la dernière date à laquelle l'on peut retourner le produit. Ensuite, elle attribut le résultat à un champ au format JMA :

COMPUTE RETURN_BY/DMY = DATE_SOLD + 7;

WebFOCUS