Sql SAS插入日期格式

Sql SAS插入日期格式,sql,sas,sas-macro,Sql,Sas,Sas Macro,我有以下代码: 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(da

我有以下代码:

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.

我想,我在格式化日期、插入或使用宏时出错了。请帮助我

宏变量
LOAD\u DATE
不存在,或者与源代码生成相关的值不正确

试一试

位于的
LOAD\u DATE
列中的值

&LOAD_DATE as LOAD_DATE

不需要对其进行格式化以使其具有可读性,它需要是日期-时间值本身。

您的第一个
%let
语句不是有效的SAS代码,因为它不包含要为其赋值的宏变量名称。您实际运行的代码是什么?为什么要在视图中放入一个常量datetime值?您是否正在尝试记录视图创建的时间?如果要在使用视图提取数据时执行
datetime()
函数,请将实际函数调用编码到视图定义中,而不是常量值。
&LOAD_DATE as LOAD_DATE