我想在SAS中将String转换为Date,我试过:
data _null_;
monyy = '05May2013';
date = input(substr(strip(monyy),1,9),yymmdd.);;
put date=date9.;
run;
但它没有用。可以这样做吗?
答案 0 :(得分:13)
格式如
date9.
或
mmddyy10.
将文本转换为sas日期时,对输入命令无效。你可以使用
Date = input( cdate , ANYDTDTE11.);
或
Date = input( cdate , ANYDTDTE10.);
转换。
答案 1 :(得分:9)
您不需要substr或strip。
input(monyy,date9.);
答案 2 :(得分:3)
如上所述,简单的答案是:
date = input(monyy,date9.);
添加:
put date=yymmdd.;
为什么这个有效的原因,以及你所做的不是因为SAS中常见的误解。 DATE9。是一个INFORMAT。在INPUT语句中,它为SAS解释器提供了一组转换命令,它们可以将这些命令发送给编译器,以便将文本转换为正确的数字,一旦应用了正确的FORMAT,它就会变成日期。 FORMAT只是数字(或字符)的可见表示。因此,通过使用YYMMDD。,您将INPUT函数与FORMAT而不是INFORMAT混淆,并且可能会出现一个有用的错误:
Invalid argument to INPUT function at line... etc...
其中没有告诉你下一步该怎么做。
总之,将您的角色日期表示为YYMMDD。在SAS中,您需要:
date = input(monyy,date9.);
put date=YYMMDD10.;
答案 3 :(得分:1)
尝试
data _null_;
monyy = '05May2013';
date = input(substr(strip(monyy),1,9),date9.);
put date=date9.;
run;
答案 4 :(得分:1)
输入(char_val,date9。);
您可以考虑使用将其转换为字格式 输入(char_val,worddate。)
中获得很多答案 5 :(得分:1)
此代码有助于:
data final; set final;
first_date = INPUT(compress(char_date),date9.); format first_date date9.;
run;
我个人在SAS上试过它
答案 6 :(得分:0)
input(char_val,current_date_format);
您可以在显示时指定任何日期格式,例如设置char_val=date9.;