@imdickson wrote: Hi, i tried 's' but i got error until i saw your reply without the single quotation, it works! However, when i put it in SAS DI Studio, i got this error : data null; 27 /* set ODMSCDS.FIELD;*/ 28 where '2017-01-01 00:00:00'dt >= %sysfunc(intnx(year,%sysfunc(today()),-2,s),date9.); NOTE: Line generated by the macro function "SYSFUNC". 28 13JUN2015 _______ 22 76 ERROR: Syntax error while parsing WHERE clause. ERROR: No input data sets available for WHERE statement. 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. 29 run;
That's why I gave you the hint with using the best. format to obtain the raw date value, which can easily be used in such situations;
but you have an apple/orange problem, because you compare a datetime literal with a date value, which will surely fail. And the datetime literal was not correctly written (datetime literals also use the SAS date. format)!
Use
where '01jan2017'd >= %sysfunc(intnx(year,%sysfunc(today()),-2,s),best.);
instead.
PS after rethinking it, I'm wondering what you try to accomplish. Depending on today's date, you'd either get all observations from the dataset or none, as you are in fact comparing two literals.
... View more