Конвертировать SAS DATE и использовать в PROC SQL - PullRequest
0 голосов
/ 28 января 2019

У меня проблемы с датами в SAS Enterprise Guide 7.1 M4.

это очень просто в SQL Server или VBA, но в SAS сводит меня с ума.

Проблема: для некоторыхстранная причина, по которой я не могу сделать простой выбор.Я перепробовал много разных форм форматирования и преобразования, но, похоже, что любая из них работает, My Simple select не возвращает никаких наблюдений.

Описание T1.DT_DATE в содержимом proc Тип: Num Len: 8 Формат: DDMMYY10,Информат: DATETIME20.

%let DATE_EXAMPLE='01JAN2019'd;

data _null_;
      call symput ('CONVERTED_DATE',put(&DATE_EXAMPLE, ddmmyy10.));
run;

%put &CONVERTED_DATE;

PROC SQL;
    CREATE TABLE TEST_SELECT AS 
        SELECT * 
        FROM MY_SAMPLE_DATA as T1
        WHERE T1.DT_DATE = &CONVERTED_DATE
;QUIT;

1 Ответ

0 голосов
/ 28 января 2019

По сути, вы устанавливаете дату правильно, но вы меняете ее на другое значение, которое не понимается в предложении where.Посмотрите разрешения макропеременных для обеих макропеременных, которые вы создали

%put value of my earlier date value  is &DATE_EXAMPLE;
value of my earlier date value  is '01JAN2019'd
%put value of my current date value is &CONVERTED_DATE;
 value of my current date value is 01/01/2019

измените ваш код, чтобы использовать литерал даты, который равен «01JAN2019», тогда ваш код будет работать.01.01.2009 значение не будет иметь смысла в предложении where.

PROC SQL;
CREATE TABLE TEST_SELECT AS 
    SELECT * 
    FROM MY_SAMPLE_DATA as T1
    WHERE T1.DT_DATE = &CONVERTED_DATE
;QUIT;
...