如何在SAS中将String转换为Date值?

时间:2013-03-26 20:50:55

标签: sas

我想在SAS中将String转换为Date,我试过:

data _null_; 
   monyy = '05May2013'; 
   date = input(substr(strip(monyy),1,9),yymmdd.);;
   put date=date9.; 
   run;

但它没有用。可以这样做吗?

7 个答案:

答案 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中,您需要:

  1. 更改INFORMAT - date = input(monyy,date9.);
  2. 应用格式 - 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。)

您可以在此页http://v8doc.sas.com/sashtml/lrcon/zenid-63.htm

中获得很多

答案 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.;