Hi,
I had this ERROR about dates. I tried with fix dates like 01JAN2012 and 07FEB2018 and works fine. I don't know why SAS doesn't like calculated variables.
34
35 GOPTIONS ACCESSIBLE;
36 %let date=2012-01-01;
37 %let date_d9=%sysfunc(inputn(&date, yymmdd10.), date9.);
38 %put &date_d9.;
01JAN2012
39
40 %let tdate = %sysfunc(today(),date9.);
41 %put &tdate.;
07FEB2018
42
43 PROC SQL;
44 CREATE TABLE WORK.TEST AS
45 SELECT t1.'Instalação'n,
46 t1.Painel,
47 t1.'Último Disparo'n
48 FROM WORK.LISTADISJUNTORESRND t1
49 WHERE t1.'Último Disparo'n BETWEEN 'date_d9.'d AND 'tdate.'d;
ERROR: Invalid date/time/datetime constant 'date_d9.'d.
ERROR: Invalid date/time/datetime constant 'tdate.'d.
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
50 quit;
NOTE: The SAS System stopped processing this step because of errors.
Regards,
Aleixo
You need to refer to your macro variables properly. That means adding &, and using double quotes instead of single quotes:
WHERE t1.'Último Disparo'n BETWEEN "&date_d9."d AND "&tdate."d;
You need to refer to your macro variables properly. That means adding &, and using double quotes instead of single quotes:
WHERE t1.'Último Disparo'n BETWEEN "&date_d9."d AND "&tdate."d;
Thanks a lot. Yes it is true. I try with & but i never put characters "" .
Two errors:
1. No & (ampersand) before the macro variables
2. Macro variables only resolve in double quotes
Once you make those changes it should work.
Thank you.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.