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 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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
  • 523 views
  • 0 likes
  • 2 in conversation