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.
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 save with the early bird rate—just $795!
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.