BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
Tal
Pyrite | Level 9 Tal
Pyrite | Level 9

 

%let YTD_START = %sysfunc(intnx(year.11, &LASTFRI, 0),yymmdd10.);

this above gives me YTD_START='2023-11-01'  beginning of  fiscal year but  when i am  trying to get the date 6 months prior  to fiscal year  (below)

 

%let back_6months= %sysfunc(intnx(month,&YTD_START,-6),yymmdd10.);

i am  getting back_6months=1965-01-01.  What do  i have wrong here? 

1 ACCEPTED SOLUTION

Accepted Solutions
PaigeMiller
Diamond | Level 26

Remove the format from the %let YTD_START = statement.

 

%let YTD_START = %sysfunc(intnx(year.11, &LASTFRI, 0));

 

Why? Because to do arithmetic or logical operations on macro variables whose values are dates or time or date/times, the value in the macro variable must be unformatted. See Maxim 28.

--
Paige Miller

View solution in original post

2 REPLIES 2
PaigeMiller
Diamond | Level 26

Remove the format from the %let YTD_START = statement.

 

%let YTD_START = %sysfunc(intnx(year.11, &LASTFRI, 0));

 

Why? Because to do arithmetic or logical operations on macro variables whose values are dates or time or date/times, the value in the macro variable must be unformatted. See Maxim 28.

--
Paige Miller
Tal
Pyrite | Level 9 Tal
Pyrite | Level 9

Thank you !!

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 801 views
  • 0 likes
  • 2 in conversation