- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hello
I want to calculate number of months between two dates and keep it as a sas macro variable.
Do you know how to do it in open code?
%let start=1612;
%let end=1803;
%let date_start=%sysfunc(inputn(&start.,yymmn4.));
%let date_end=%sysfunc(inputn(&end.,yymmn4.));
%let n=%sysfunc(intck('QUARTER',&date_start.,&date_end.)) ;
I get warning
WARNING: An argument to the function INTCK referenced by the %SYSFUNC or %QSYSFUNC macro function is out of range.
I know how to do it in non open code:
Data _null_;
n=intck('QUARTER',&date_start.,&date_end.);
Call Symput ('n',n);
run;
%put &n.;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Macro language is text-only, so quotes are not needed around strings:
%let n=%sysfunc(intck(QUARTER,&date_start.,&date_end.)) ;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
If you really want to compute number of months between two dates, I would suggest using MONTH instead of QUARTER as the first argument to INTCK.
You would be much safer using four-digit years. System options can affect whether 1803 is interpreted as 201803 or 191803.