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