How to: |
Reference: |
Available Languages: reporting, Maintain
The HDIFF function calculates the number of date or time component units between two date-time values.
HDIFF does its subtraction differently from DATEDIF, which subtracts date components stored in date fields. The DATEDIF calculation looks for full years or full months. Therefore, subtracting the following two dates and requesting the number of months or years, results in 0:
DATE1 12/25/2014, DATE2 1/5/2015
Performing the same calculation using HDIFF on date-time fields results in a value of 1 month or 1 year as, in this case, the month or year is first extracted from each date-time value, and then the subtraction occurs.
HDIFF(end_dt, start_dt, 'component', output)
where:
Date-time
Is the date-time value to subtract from, the name of a date-time field that contains the value, or an expression that returns the value.
Date-time
Is the date-time value to subtract, the name of a date-time field that contains the value, or an expression that returns the value.
Alphanumeric
Is the name of the component to be used in the calculation, enclosed in single quotation marks. If the component is a week, the WEEKFIRST parameter setting is used in the calculation.
Floating-point double-precision
Is the field that contains the result, or the format of the output value enclosed in single quotation marks. The format must be floating-point double-precision.
HDIFF calculates the number of days between the TRANSDATE and ADD_MONTH fields and stores the result in DIFF_PAYS, which has the format 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
The output is:
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 calculates the number of days between ADD_MONTH and 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