Comment : Référence : |
Langages disponibles : reporting, Maintain
La fonction HDIFF fait le calcul du nombre d'unités entre deux valeurs date-heure.
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.
HDIFF(end_dt, start_dt, 'component', output)
où :
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.
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.
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.
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.
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
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 |