I am trying to find the month value only for the previous month. Example current month is 2, so I want to return 1.
I am using the following syntax, but its not returning the 1.
-SET &PREV_MONTH = DATEADD(DTPART(DT_CURRENT_DATE(),MONTH), 'M', -1);
-SET &PREV_MONTH = (DTPART(DT_CURRENT_DATE(),MONTH);
This returns 2, so what would I need to do to it, to return 1?This message has been edited. Last edited by: FP Mod Chuck,
WebFOCUS 7.7 and WebFOCUS 8
Windows, All Outputs
Would it be easier to use &DATEYYMD instead of DTPART(DT_CURRENT_DATE(),MONTH) ?
Check the Documentation
Generally it is good to use the date functions, but maybe in this situation you can simply:
-SET &PREV_MONTH = IF &DATEM EQ 1 THEN 12 ELSE &DATEM - 1;
How about this ...
-SET &PREV_MONTH = DTPART(DTADD(DT_CURRENT_DATE(), MONTH, -1), MONTH);
or this ...
-SET &PREV_MONTH = DATECVT((DATEADD((DATECVT (&YYMD, 'I8YYMD', 'YYMD')),'M', -1)), 'YYMD','M');
WebFocus 8.201M, Windows, App Studio
This will do it.
You have to remember that in Dialogue Manager, all variable are strings. To use Date Functions like DTPART, DATEADD, DATEMOV, etc., you have to use a smart date. This is done using DATECVT. Another way is to use DEFINE FUNCTION to create versions of these Date Functions. We use versions of DATEMOV, DATEADD and DATEDIF for use with Dialogue Manager. See the link below. One can do anything with these that they can do in TABLE.
Date Functions for DM
Contrary to what Little Caesar's says about their delivery, DEFINE FUNCTION is the best thing since sliced bread.This message has been edited. Last edited by: jgelona,
In FOCUS since 1985. Prod WF 8.0.08 (z90/Suse Linux) DB (Oracle 11g), Self Serv, Report Caster, WebServer Intel/Linux.
|Powered by Social Strata|