我正在使用SAS从SQL数据库中拉取数据,使用了通过传递来提高速度,因为这些数据库非常大。下面的代码按预期工作。
%let expectdate1 = '2013-07-03';*/
proc sql;
connect to ***** as abc (tdpid=***** user='****' password='*****' );
create table Searched_data as
select * from connection to dss(
SELECT *
FROM database.tablename
WHERE CAPTURE_DT >= '2013-07-01' and CAPTURE_DT <= &expectdate1
);
disconnect from abc;
quit;
问题出现在我想要对expectate1进行参数化时。
因此,我替换了
%let expectdate1 = '2013-07-03';*/
使用
%let expectdate1 = put(Date(),YYMMDD10.);
这个不起作用,我收到的错误信息大致是这样的:
....WHERE CAPTURE_DT >= '2013-07-01' and CAPTURE_DT <= put(Date(),YYMMDD10) .....
所以它并没有评估我的日期代码,而是将实际代码传递给了SQL而不是结果字符串。