July 10, 2015, 12:09 PM
Peter FRB[SOLVED] Date Calculations..
I'm new to WF and would appreciate any advice on the following:
I need to create two dates, STARTDATE and ENDDATE.
ENDDATE is the last day of the previous month, for today June 30, 2015
STARTDATE is one year previous, for today July 1, 2014.
Thanks in advance.
This message has been edited. Last edited by: <Kathryn Henning>, July 10, 2015, 02:34 PM
CoolGuyPeter,
WF8 has many different date functions one can use to get and manipulate dates for definition in a data description or report request.
Some I've used are CHGDATE(), DATECVT(), DATEADD(), etc.
This link takes you to a great thread on date manipulation done by others on the forums that I've benefited from from time to time:
http://forums.informationbuild...?r=14810094#14810094Also, go to IBI's website and find the WF8 docs and search for date functions. You'll find bunches of info there as well.
July 10, 2015, 05:19 PM
jfr99Here's one example to look at ...
-* SET CURRENT DATE
-SET &CUR_YYMD = &YYMD;
-*-SET &CUR_YYMD = 20110901;
-*
-SET &BCM_YYMD = DATECVT(DATEMOV(DATECVT(&CUR_YYMD, 'I8YYMD', 'YYMD'), 'BOM'),'YYMD', 'I8YYMD');
-*
-SET &BEG_YYMD = DATECVT((DATEADD((DATECVT (&BCM_YYMD, 'I8YYMD', 'YYMD')),'M', -12)), 'YYMD','I8YYMD');
-SET &END_YYMD = DATECVT((DATEADD((DATECVT (&BCM_YYMD, 'I8YYMD', 'YYMD')),'D', -1)), 'YYMD','I8YYMD');
-*
-SET &STARTDATE = FPRINT(DATECVT(&BEG_YYMD,'I8YYMD','MDYY'),'MDtrYY','A20');
-SET &ENDDATE = FPRINT(DATECVT(&END_YYMD,'I8YYMD','MDYY'),'MDtrYY','A20');
-*
-TYPE ------------------------------------------------
-TYPE CURRENT DATE (CUR_YYMD) ----- &CUR_YYMD
-TYPE ------------------------------------------------
-TYPE BEGIN CURRENT MONTH (BCM_YYMD) ----- &BCM_YYMD
-TYPE ------------------------------------------------
-TYPE BEGIN DATE (BEG_YYMD) ----- &BEG_YYMD
-TYPE END DATE (END_YYMD) ----- &END_YYMD
-TYPE ------------------------------------------------
-TYPE --- YOUR DATES
-TYPE ------------------------------------------------
-TYPE STARTDATE ----- &STARTDATE
-TYPE ENDDATE ------- &ENDDATE
-TYPE ------------------------------------------------
July 10, 2015, 08:23 PM
Dan Satchell
-SET &CURRENT_YR_MTH = EDIT(&YYMD,'999999$$');
-SET &REPORT_YR_MTH = AYM(&CURRENT_YR_MTH,-1,'I6YYM');
-*
-SET &CURRENT_MTH_BEG = &CURRENT_YR_MTH | '01';
-SET &REPORT_MTH_BEG = &REPORT_YR_MTH | '01';
-SET &REPORT_MTH_END = AYMD(&CURRENT_MTH_BEG,-1,'I8');
-*
-SET &REPORT_YEAR = EDIT(&REPORT_YR_MTH,'9999$$');
-SET &YEAR1_AGO_YR_MTH = AYM(&CURRENT_YR_MTH,-12,'I6YYM');
-SET &YEAR1_AGO_BEG = &YEAR1_AGO_YR_MTH | '01';
-*
-TYPE &REPORT_YEAR
-TYPE &REPORT_MTH_END
-TYPE &REPORT_MTH_BEG
-TYPE &YEAR1_AGO_BEG
July 12, 2015, 06:04 PM
WazHi Peter,
I would suggest that you have a good read of the Functions manual so you know what is available.
V8.1.04 Functions ManualJuly 13, 2015, 02:47 PM
Peter FRBThanks all for your assistance. Much appreciated.
July 15, 2015, 05:04 PM
Edward WolfgramJust for fun, here is how it could be done without subroutines:
DEFINE FILE CAR
TODAY/YYMD WITH COUNTRY = &YYMD ;
YRMON/YYM = TODAY ;
FSTDAY/YYMD = YRMON ;
IFSTDAY/I8YYMD = FSTDAY ;
IYR/I4 = IFSTDAY/10000 ;
IMDAY/I4 = IFSTDAY - (IYR*10000);
ISTART/I8YYMD = (IYR-1)*10000 + IMDAY ;
STRTDAY/YYMD = ISTART ;
ENDDAY/YYMD = FSTDAY - 1;
END
-RUN
TABLE FILE CAR
PRINT YRMON YRMON FSTDAY ENDDAY IFSTDAY IYR IMDAY ISTART STRTDAY
IF RECORDLIMIT EQ 1
END
-RUN