无法在YYMMDD10中插入日期。格式化为SAS中的表格

时间:2014-07-07 20:05:27

标签: sql sas

我想在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

1 个答案:

答案 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语句等效的函数。