Есть ли лучший способ сделать это?
asof = CAST(DATEADD(week, DATEDIFF(week,'19000101',CURRENT_TIMESTAMP),
'1899-12-30T19:00:00') AS DATE)
По сути, я пытаюсь использовать субботу предыдущей недели в качестве своего фильтра на Proc Sql. Независимо от того, в какой день я запускаю этот запрос, он должен дать мне дату (не метку времени) прошлой субботы.
Спасибо!
да, это SQL-код для SQL-сервера
Пожалуйста, покажите, что вы используете его в фильтре. В вашем примере он создает переменную, и то, как вы фильтруете, может повлиять на логику.
%let last_saturday = intnx ('week.7', today()-1, 0);
%let last_saturday = %sysfunc(intnx (week.7, %sysfunc(today())-1, 0), yymmdd10.);
%put NOTE: &last_saturday;
%let last_saturday_sq = %sysfunc(quote(&last_saturday,%str(%')));
%put NOTE: &last_saturday_sq;
proc sql;
… connection to …
(cast &last_saturday_sq as DATE) as asof
…
К сожалению, это не сработало. Я не уверен, почему, так как это не дает мне сообщения об ошибке.
попробуйте тот же код без макропеременной, вместо этого используйте жестко запрограммированное значение и посмотрите, не произойдет ли то же самое «не сработало». Если так, то дело не в макросе. Если что-то работает, это где-то в области макроса / сквозной передачи.
это SQL-код для тераданных или SQL-сервер.