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 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.