BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Seb_A_Sanders
Calcite | Level 5

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.

1 ACCEPTED SOLUTION

Accepted Solutions
Kurt_Bremser
Super User

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.

View solution in original post

1 REPLY 1
Kurt_Bremser
Super User

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.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

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
  • 1 reply
  • 1740 views
  • 0 likes
  • 2 in conversation