SAS вставить формат даты - PullRequest
0 голосов
/ 22 января 2020

У меня есть следующие коды:

PROC SQL;

    CREATE TABLE Hub_Category2 (
    CategoryID INT NOT NULL,
    CategoryName VARCHAR(15) NOT NULL,
    LOAD_DATE NUM FORMAT=DATETIME22. NOT NULL,
    RECORD_SOURCE VARCHAR(255) NOT NULL);
RUN;

quit;

%let "LOAD_DATE: %sysfunc(datetime(),datetime22.)"; 

%let RECORD_SOURCE='123'; 

proc sql;

    CREATE VIEW VIEW_HUB_CATEGORIES AS
    SELECT 
    CategoryID,
    CategoryName,
    &LOAD_DATE as LOAD_DATE, 
    &RECORD_SOURCE as RECORD_SOURCE 
    FROM  LIB.CATEGORIES;
RUN;
Quit;

Когда я запускаю следующий код

proc sql;

  insert into Hub_Category2 select * from VIEW_HUB_CATEGORIES;

  run;

Quit;

Выдает следующую ошибку.

proc sql;
    72         insert into Hub_Category2 select * from VIEW_HUB_CATEGORIES;
 ERROR: Value 3 on the SELECT clause does not match the data type of the 
corresponding column listed after the INSERT table name.

I думаю, я допустил ошибку при форматировании даты, вставке или использовании макроса. Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 22 января 2020

Макропеременная LOAD_DATE либо отсутствует, либо неверно оценена в отношении генерации исходного кода.

Попробуйте

%let LOAD_DATE = %sysfunc(datetime());  %* macro variable value is source code (a bunch of digits) representing current datetime;
%let RECORD_SOURCE = '123';             %* macro variable value is source code for a single quoted string literal;

proc sql;
    CREATE VIEW VIEW_HUB_CATEGORIES AS
    SELECT 
    CategoryID,
    CategoryName,
    &LOAD_DATE as LOAD_DATE, 
    &RECORD_SOURCE as RECORD_SOURCE 
    FROM  LIB.CATEGORIES;
RUN;

Значение помещается в столбец LOAD_DATE в

&LOAD_DATE as LOAD_DATE

не нужно форматировать для удобства чтения, это должно быть само значение даты и времени.

...