Hello..
Quick Example:
Date A = 31Dec2012
Date B = 12Dec2012
Then I want to know which nth Weekday Date A is since Date B
In this example Date A would be the 3rd Monday since Date B.
Is there anyway to calculate this automatically? Output like 3-2 (3rd-Monday)
Regards,
Raphael
DATA _NULL_;
DATEA='31DEC2012'D;
DATEB='12DEC2012'D;
VAR=COMPRESS(INTCK('WEEK', DATEB, DATEA)||"-"||WEEKDAY(DATEA));
PUT VAR;
RUN;
You may be able to accomplish this using a combination of INTCK which returns intervals between SAS date values such as weeks, and the WEEKDAY function which will return day of the week of a SAS date value. Check the online help for syntax, intervals supported and starts (not everyone considers the week to start on the same day).
It doesn't matter in this situation on which day the week starts. "Check online help"-Answers are useless. Thanks anyway.
Check out the below code and see if it works for you.
data one;
length output $10;
date_a = '31Dec2012'd;
date_b = '12Dec2012'd;
weeka = week(date_a,'u');
weekdaya = weekday(date_a);
weekb = week(date_b,'u');
output = strip(put(weeka-weekb,best.))||'-'||strip(put(weekdaya,best.));
format date_a date_b date9.;
run;
Bit complicated :smileysilly:
Will post my solution.. Bit smaller.. But thanks
DATA _NULL_;
DATEA='31DEC2012'D;
DATEB='12DEC2012'D;
VAR=COMPRESS(INTCK('WEEK', DATEB, DATEA)||"-"||WEEKDAY(DATEA));
PUT VAR;
RUN;
Don't feed the trolls...
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.