Я пытаюсь извлечь данные из диапазона дат (устанавливается переменными start_date и end_date, определенными в нулевом шаге).
Обычно я делаю это, используя passthru PRO C SQL, следующим образом :
PROC SQL;
CONNECT TO ORACLE AS xxxxx (AUTHDOMAIN="xxxxx" PATH=xxxxx preserve_comments);
CREATE TABLE
work.new_data AS
SELECT
*
FROM
CONNECTION TO xxxxx (SELECT /*+parallel(16)*/ var1, var2, var3
FROM
oracle_data
WHERE date >= &start_date. AND date <= &end_date.);
DISCONNECT FROM xxxxx;
QUIT;
Это извлекает данные гораздо более эффективно, чем выполнение их через шаг данных или извлечение всех данных и их фильтрация.
Проблема связана с этим конкретным набором данных. с использованием даты и времени сохраняется в виде строки в формате «ДД / ММ / ГГГГ ЧЧ: ММ: СС». Я знаю, как преобразовать это обычно в шаге данных или тому подобное, но проблема в том, что я не могу преобразовать или интерпретировать его как дату на промежуточной стадии PRO C SQL.
Замена шага WHERE с любой функцией SAS, как показано ниже, выдается «Oracle Prepare Error», поскольку она не распознает функции. Я также пытался использовать функции SQL для чего-то похожего в прошлом, и они также не работали, и мне не удалось найти решение.
WHERE DATEPART(INPUT(rtp_date,anydtdtm.)) >= &start_date.)
Возможно ли интерпретировать строку как datetime в промежуточной стадии и использовать его для фильтрации? Или, может быть, есть другой способ сделать это, который все еще более эффективен, чем вытягивание всего или выполнение шага данных непосредственно на данные oracle?