Проблемы с фильтрацией записей с использованием операторов данных в PROC SQL и Teradata - PullRequest
0 голосов
/ 25 октября 2019

В рамках proc sql я хочу фильтровать свои результаты по диапазонам дат, и я продолжаю получать ошибки. Мои переменные даты - DATE8, формат - 04JUL1776.

Я попытался добавить некоторые входные данные вокруг конкретных дат в коде. Это ничего не дало.;

proc sql noprint;
%tdconnectTo;
create table ptemp.DL2_2018_IDS as
select * from connection to Teradata (
select     distinct
           PERS_ID
     , REC_EFF_DT
     , REC_TERM_DT
from       oeauacbrgdlp1.DV_DIM_MBR
where      PERS_ID is not null
and        REC_EFF_DT <= '31DEC2018'd and REC_TERM_DT >= '01JAN2018'd
order by PERS_ID
);
disconnect from teradata;
quit;

1 Ответ

1 голос
/ 26 октября 2019

Если вы используете сквозной SQL, вам нужно предоставить значения в форме, приемлемой для базы данных. Для литерала даты SQL:

REC_EFF_DT <= date'2018-12-31' and REC_TERM_DT >= date'2018-01-01'

или если вам действительно необходимо указать строковое значение в форме SAS DATE9 по какой-либо причине, вы должны явно указать базе данных преобразовать эту строку в дату:

REC_EFF_DT <= to_date('31DEC2018','DDMONYYYY') and REC_TERM_DT >= to_date('01JAN2018','DDMONYYYY')

или

REC_EFF_DT <= CAST('31DEC2018' AS DATE FORMAT'DDMMMYYYY') and REC_TERM_DT >= CAST('01JAN2018' AS DATE FORMAT'DDMMMYYYY')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...