Hello,
I have a data step whereby I'm selecting around 50,000 customers. In the output file I have date fields (DATE9.) and I want to create an if statement that will create a value for only those dates which fall in the last 3 months. So far I have the below, please advise where I'm going wrong and how I can do this?
IF TXN_DATE BETWEEN TODAY() AND TODAY()-3 THEN DO;R_SCORE=50;END;
Thanks
SAS stores dates as referring to a particular day. So TODAY()-3 is three days earlier. Change it to something like TODAY()-90 and you should be fine.
It's possible (can't test it right now) that you can't use BETWEEN in an IF statement. That's easy enough to change:
if TODAY()-90 <= TXN_DATE <= TODAY() then R_SCORE=50;
SAS stores dates as referring to a particular day. So TODAY()-3 is three days earlier. Change it to something like TODAY()-90 and you should be fine.
It's possible (can't test it right now) that you can't use BETWEEN in an IF statement. That's easy enough to change:
if TODAY()-90 <= TXN_DATE <= TODAY() then R_SCORE=50;
Just to note @Astounding, that is assuming a base value of 30 days per month. That may not be entirely acurate. I would suggest using the function for it:
if intnx('month',today(),-3) <= txn_date <= today() then r_score=50;
Don't shout your code. Normal speech is sufficient (don't write code in all capitals, for readability)
The between operator is only available in where conditions, use this instead:
if intnx('month',today(),-3,'same') <= txn_date <=today()
then do;
r_score = 50;
end;
Assuming that txn_date is a SAS date value, of course
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.