Focal Point
[SOLVED] subtracting HYYMDS fields

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/3897080916

April 16, 2012, 03:36 PM
developing
[SOLVED] subtracting HYYMDS fields
Hi, I need to subtract two date fields in HYYMDS format and return the number of business days. Anyone have an idea how to do this?
Thanks in advance for your help!

This message has been edited. Last edited by: Kerry,


WebFOCUS 7.6.10, Windows Vista, Oracle, Output-Excel/PDF/HTML
April 16, 2012, 03:54 PM
Mary Watermann
Here is one way to do it:

  

SET BUSDAYS = _MT_TF_

-SET &START_DATE = '20120416';
-SET &END_DATE   = '20120430';

DEFINE FILE CAR
START_DATE/YYMD WITH CAR = &START_DATE ;
END_DATE/YYMD 	       = &END_DATE ;
END
TABLE FILE CAR
PRINT
START_DATE
END_DATE
COMPUTE DIFF/I5 = DATEDIF(START_DATE,END_DATE,'BD');
BY CAR
IF RECORDLIMIT EQ 1
END



WF 7.6.10, Windows, PDF, Excel
April 16, 2012, 05:59 PM
Waz
For Datetime format fields, you can use the HDIFF function.

I quick search of the forum for "SUBTRACT HYYMDS" would have given you the answer.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

April 17, 2012, 09:16 AM
Mary Watermann
HDIFF doesn't account for Business Days.

BUSDAYS works with DATEDIF.


WF 7.6.10, Windows, PDF, Excel
April 17, 2012, 11:06 AM
developing
Thanks! The requirement has changed so I'm calculating using Calendar Days now. I'm now using HDIFF but I can't seem to get the decimal portion to show. Here's my DEFINE'd field:

NEWCT/D12.2=HDIFF(DATE1, DATE2, 'DAY', NEWCT);

However, only full days are shown. So, for example, if DATE1 = 2012/02/28 09:06:05 and DATE2 = 2012/03/12 14:09:14, I get 13 instead of 13.21. Is there anyway around this?


WebFOCUS 7.6.10, Windows Vista, Oracle, Output-Excel/PDF/HTML
April 17, 2012, 05:40 PM
Waz
Instead of working with days, work with hours, minutes or seconds, then calc the days from that.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

April 18, 2012, 03:44 AM
Wep5622
Wouldn't that cause problems around DST changes?


WebFOCUS 8.1.03, Windows 7-64/2008-64, IBM DB2/400, Oracle 11g & RDB, MS SQL-Server 2005, SAP, PostgreSQL 11, Output: HTML, PDF, Excel 2010
: Member of User Group Benelux :
April 23, 2012, 03:24 PM
developing
This is what was given as a solution, from a co-worker...

NEWCT/D12.2=HDIFF(DATE1,DATE2, 'MINUTE', NEWCT);

This will give you the number of minutes between the two dates. You would then need to add:

NEWCT2/D12.2=NEWCT/1440;

This will convert the minutes to days with a decimal.


Thanks for all of your suggestions!


WebFOCUS 7.6.10, Windows Vista, Oracle, Output-Excel/PDF/HTML