Issue: I keep getting this error message after I submit SQL statement
*=========> COMMANDS <=================;
%LET BEGDATE = MDY(01,31,2019);
*=========> COMMANDS <=================;
PROC SQL;
CREATE TABLE MOVCODES AS SELECT
A.*,
B.MOVCOD,
B.MOVTIM,
B.MOVDAT FORMAT=MMDDYY10.
FROM R.ORIGINALPLMPOP A LEFT JOIN OPPS.INMT4BC1 B
ON A.ID=B.ID
WHERE B.MOVDAT LE "&BEGDATE"D;
QUIT;
Error:ERROR: Invalid date/time/datetime constant "MDY(01,31,2019)"D.
Your generated code would be:
*=========> COMMANDS <=================; %LET BEGDATE = MDY(01,31,2019); *=========> COMMANDS <=================; PROC SQL; CREATE TABLE MOVCODES AS SELECT A.*, B.MOVCOD, B.MOVTIM, B.MOVDAT FORMAT=MMDDYY10. FROM R.ORIGINALPLMPOP A LEFT JOIN OPPS.INMT4BC1 B ON A.ID=B.ID WHERE B.MOVDAT LE "MDY(01,31,2019)"D; QUIT;
That isn't valid SAS syntax, you do not need the quotes or d.
WHERE B.MOVDAT LE &BEGDATE;
would become:
WHERE B.MOVDAT LE MDY(1, 31, 2019);
Or you need to define your begdate different, see example below:
%let begdate = %sysfunc(mdy(1, 31, 2019), date9.);
....
WHERE B.MOVDAT LE "&begdate"d;
which will resolve as:
WHERE B.MOVDAT LE "31Jan2019"d;
@Renee1984 wrote:
Issue: I keep getting this error message after I submit SQL statement
*=========> COMMANDS <=================;
%LET BEGDATE = MDY(01,31,2019);*=========> COMMANDS <=================;
PROC SQL;
CREATE TABLE MOVCODES AS SELECT
A.*,
B.MOVCOD,
B.MOVTIM,
B.MOVDAT FORMAT=MMDDYY10.
FROM R.ORIGINALPLMPOP A LEFT JOIN OPPS.INMT4BC1 B
ON A.ID=B.ID
WHERE B.MOVDAT LE "&BEGDATE"D;
QUIT;Error:ERROR: Invalid date/time/datetime constant "MDY(01,31,2019)"D.
Your generated code would be:
*=========> COMMANDS <=================; %LET BEGDATE = MDY(01,31,2019); *=========> COMMANDS <=================; PROC SQL; CREATE TABLE MOVCODES AS SELECT A.*, B.MOVCOD, B.MOVTIM, B.MOVDAT FORMAT=MMDDYY10. FROM R.ORIGINALPLMPOP A LEFT JOIN OPPS.INMT4BC1 B ON A.ID=B.ID WHERE B.MOVDAT LE "MDY(01,31,2019)"D; QUIT;
That isn't valid SAS syntax, you do not need the quotes or d.
WHERE B.MOVDAT LE &BEGDATE;
would become:
WHERE B.MOVDAT LE MDY(1, 31, 2019);
Or you need to define your begdate different, see example below:
%let begdate = %sysfunc(mdy(1, 31, 2019), date9.);
....
WHERE B.MOVDAT LE "&begdate"d;
which will resolve as:
WHERE B.MOVDAT LE "31Jan2019"d;
@Renee1984 wrote:
Issue: I keep getting this error message after I submit SQL statement
*=========> COMMANDS <=================;
%LET BEGDATE = MDY(01,31,2019);*=========> COMMANDS <=================;
PROC SQL;
CREATE TABLE MOVCODES AS SELECT
A.*,
B.MOVCOD,
B.MOVTIM,
B.MOVDAT FORMAT=MMDDYY10.
FROM R.ORIGINALPLMPOP A LEFT JOIN OPPS.INMT4BC1 B
ON A.ID=B.ID
WHERE B.MOVDAT LE "&BEGDATE"D;
QUIT;Error:ERROR: Invalid date/time/datetime constant "MDY(01,31,2019)"D.
worked perfect thank you for your help!!!
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.