Я пытаюсь запросить дополнения прошлой недели к базе данных Oracle в одночасье, и мне нужно использовать макросы для заполнения дат. Я могу выполнить запрос ниже, если я жестко закодировал фактические даты. Я пробовал двойные и одинарные кавычки в макросах &sd
и &ed
. Пожалуйста, сообщите.
data _null_;
sd = dhms(today()-7,00,00,00);
ed = dhms(today()-1,23,59,59);
call symput("sd", put(sd, datetime20.));
call symput("ed", put(ed, datetime20.));
run;
%put &sd &ed;
proc sql;
connect to oracle (user=x password=x path=x);
create table weekly_test as
select * from connection to oracle
(select * from x.Estimates
where state_fips_code = '41'
and altered_date between
to_date('&sd','DDMONYYYY:HH24:MI:SS')
and to_date('&ed','DDMONYYYY:HH24:MI:SS'));
disconnect from oracle;
quit;
ошибка
Ошибка выполнения ORACLE: ORA-01858: не числовой символ был найден там, где ожидалось число.
и с двойными кавычками
and altered_date between
to_date("&sd",'DDMONYYYY:HH24:MI:SS')
and to_date("&ed",'DDMONYYYY:HH24:MI:SS'));
эта ошибка
ERROR: ORACLE prepare error: ORA-00904: " 21MAR2012:23:59:59": invalid identifier. SQL
statement: select * from X.Estimates where state_fips_code = '41' and altered_date
between to_date(" 15MAR2012:00:00:00",'DDMONYYYY:HH24:MI:SS') and to_date("
21MAR2012:23:59:59",'DDMONYYYY:HH24:MI:SS').