Search code examples
datesasdate-formatting

Subtracting month in SAS


%let mth1 = '2022-05-01'; how do I get '2022-02-01' from the macro variable? I was thinking this intnx('month',&mth1.,-3) but this only works in the format of yyyymmdd

Thank you.


Solution

  • You'll need to convert it into a SAS date with inputn(), but you will need to remove quotes. %sysfunc(inputn(&mth1., yymmdd10.)) will convert it to a SAS date so that it can be used in intnx().

    %let mth1 = 2022-05-01;
    
    %let mth2 = %sysfunc(intnx(month, %sysfunc(inputn(&mth1., yymmdd10.)), -3), yymmdd10.);
    
    %put &mth2;
    

    Output:

    2022-02-01
    

    If you do want the output in single quotes, wrap the function above with %tslit().