HDIFF : Rechercher le nombre d'unités entre deux valeurs date-heure

Comment :

Référence :

Langages disponibles : reporting, Maintain

La fonction HDIFF fait le calcul du nombre d'unités entre deux valeurs date-heure.


Haut de page

x
Référence : Notes d'utilisation pour HDIFF

HDIFF effectue sa soustraction différemment de DATEDIF, qui soustrait les composants de date stockés dans les champs date. Le calcul DATEDIF recherche des années ou des mois complets. Par conséquent, la soustraction des deux dates suivantes et la requête d'obtention du nombre de mois ou d'année a pour résultat zéro :

DATE1 12/25/2014, DATE2 1/5/2015   

Le même calcul utilisant HDIFF sur des champs date-heure a pour résultat une valeur égale à 1 mois ou à 1 an car, dans ce cas, le mois ou l'année est d'abord extrait de chaque valeur date-heure avant que la soustraction ne soit effectuée.


Haut de page

x
Syntaxe : Déterminer le nombre d'unités entre deux valeurs date-heure
HDIFF(end_dt, start_dt, 'component', output)

où :

end_dt

Date-heure

est la valeur date-heure à incrémenter, le nom du champ date-heure qui contient la valeur, ou une expression qui renvoie celle-ci.

start_dt

Date-heure

est la valeur date-heure à soustraire, le nom du champ date-heure qui contient la valeur, ou une expression qui renvoie celle-ci.

component

Alphanumérique

est le nom du composant à utiliser pour le calcul, entouré par des guillemets simples. Si le composant indique une semaine, le paramètre WEEKFIRST est utilisé dans le calcul.

output

Virgule flottante (double précision

est le champ qui contient le résultat, ou le format de la valeur de sortie entre guillemets simples. Le format doit être une virgule flottante en double précision.



Exemple : Rechercher le nombre de jours entre deux champs date-heure (Reporting)

HDIFF calcule le nombre de jours entre les champs TRANSDATE et ADD_MONTH; le résultat est enregistré dans DIFF_PAYS, qui est au format par défaut est D12.2 :

TABLE FILE VIDEOTR2
PRINT CUSTID TRANSDATE AS 'DATE-TIME' AND COMPUTE
ADD_MONTH/HYYMDS = HADD(TRANSDATE, 'MONTH', 2, 8, 'HYYMDS');
DIFF_DAYS/D12.2 = HDIFF(ADD_MONTH, TRANSDATE, 'DAY', 'D12.2');
WHERE DATE EQ 2000;
END

La sortie est :

CUSTID  DATE-TIME         ADD_MONTH               DIFF_DAYS
------  ---------         ---------               ---------
1237    2000/02/05 03:30  2000/04/05 03:30:00     60.00
1118    2000/06/26 05:45  2000/08/26 05:45:00     61.00


Exemple : Rechercher le nombre de jours entre deux champs date-heure (Maintain)

HDIFF calcule le nombre de jours entre ADD_MONTH et DT1 :

MAINTAIN FILE DATETIME
FOR 1 NEXT ID INTO STK;
COMPUTE
NEW_DATE/HYYMDS = HADD(STK.DT1, 'MONTH', 2,10, NEW_DATE);
DIFF_DAYS/D12.2 = HDIFF(NEW_DATE,STK.DT1,'DAY', DIFF_DAYS);
TYPE "STK(1).DT1 = "STK(1).DT1;
TYPE "NEW_DATE = "NEW_DATE;
TYPE "DIFF_DAYS = "DIFF_DAYS
END

WebFOCUS