我想在YYMMDD10中插入日期值。格式化到我的表格中。使用DATE9。格式适用于表格,也适用于YYMMDD10。通过' put'成功显示正确/所需的输出,但在尝试将其插入表格时会出错。
SCHEMA:
PROC SQL;
Create Table Work.Validation_Rules_Record
(
TEMPLATE_ID varchar ,
RULE_ID varchar ,
INSTANCE_ID NUM,
REPORTING_ENTITY_ID NUM,
**REFERENCE_DATE num informat=yymmdd10. format=yymmdd10.,**
VALIDATION_RESULT varchar ,
VALIDATION_TIME num format=datetime19.2
) ;
QUIT;
%LET date_time=%SYSFUNC( DATETIME() );
%let refr_date='15feb2010'd;
%put %sysfunc(putn(&refr_date,yymmdd10.));
%let ref_date = %sysfunc(putn(&refr_date,yymmdd10.));
%put &ref_date;
使用DATE9时,下面的INSERT操作有效。作为格式但不适用于YYMMDD10。如下图所示。
PROC SQL;
insert into Work.Validation_Rules_Record
(
TEMPLATE_ID,
RULE_ID,
INSTANCE_ID,
REPORTING_ENTITY_ID,
**REFERENCE_DATE,**
VALIDATION_RESULT,
VALIDATION_TIME
)
Values
(
'C 01.00',
'v_m165' ,
3395,
26,
**"&ref_date"d,**
'C33',
&date_time.
)
;
select * from Work.Validation_Rules_Record ;
QUIT;
如果您需要更多信息,请与我们联系。
谢谢! KC
答案 0 :(得分:4)
"<date>"d
需要DATE9。只。它不适用于其他格式。它没有使用信息或其他任何东西;这是一个约会常数。
如果您想使用,请使用input
。
data test;
x='01JAN2013'd;
format x date9.;
run;
proc sql;
insert into test (x)
values (
%sysfunc(inputn(2014-01-01,yymmdd10.))
);
quit;
如果您在插入的普通SAS数据集中使用此数据集,请使用input
函数;在values
语句中,您需要使用使用宏语言的%sysfunc(inputn(...))
来获取它(inputn
是与数字函数的input
语句等效的函数。