I've been through the forums and can't quite find anything that fits what I'm having an issue with, so apologies if this is a repost.
I need to push a date into a global variable so I can call it within my program. Currently I get the date from:
PROC SQL noprint;
SELECT INTNX('MONTH',MDY(quarter*3,1,year),0,'E') format=date9. INTO :livd
FROM HPIindex
WHERE year = (SELECT MAX(year) FROM HPIindex)
HAVING quarter = MAX(quarter);
RUN;
When I try to apply this as a date it is coming out as a character string so throwing an error:
DATA dates;
SET date_table;
WHERE DATEPART(the_date) = &livd;
RUN;
NOTE: Line generated by the macro variable "LIVD".
28 30JUN2018
_______
22
76
ERROR: Syntax error while parsing WHERE clause.
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, AND, EQ, GE, GT, LE, LT,
NE, OR, ^=, |, ||, ~=.
ERROR 76-322: Syntax error, statement will be ignored.
Is there any way to create the &livd variable as a date instead of a string? So basically producing '30JUN2018'd instead of 30JUN2018?
Thanks, any help appreciated.
Do not use a format for your macro variable:
SELECT INTNX('MONTH',MDY(quarter*3,1,year),0,'E') INTO :livd
or use your macro variable as a date literal if it is formatted:
WHERE DATEPART(the_date) = "&livd"d;
Personally, I prefer the first option, as it makes writing subsequent code easier.
PS This is covered in Maxim 28.
Do not use a format for your macro variable:
SELECT INTNX('MONTH',MDY(quarter*3,1,year),0,'E') INTO :livd
or use your macro variable as a date literal if it is formatted:
WHERE DATEPART(the_date) = "&livd"d;
Personally, I prefer the first option, as it makes writing subsequent code easier.
PS This is covered in Maxim 28.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.