如何在SAS中将字符串转换为日期值?

如何在SAS中将字符串转换为日期值?,sas,Sas,我想在SAS中将字符串转换为日期,我尝试了: data _null_; monyy = '05May2013'; date = input(substr(strip(monyy),1,9),yymmdd.);; put date=date9.; run; 但它没有起作用。可以这样做吗?试试看 data _null_; monyy = '05May2013'; date = input(substr(strip(monyy),1,9),date9.)

我想在SAS中将字符串转换为日期,我尝试了:

data _null_; 
   monyy = '05May2013'; 
   date = input(substr(strip(monyy),1,9),yymmdd.);;
   put date=date9.; 
   run;
但它没有起作用。可以这样做吗?

试试看

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

你不需要穿紧身衣或紧身衣

input(monyy,date9.);
输入(字符值,日期9)

<>您可以考虑将其转换为Word格式。 输入(字符值、字日期)

你可以在这个页面上看到很多


您可以在显示时指定任何日期格式,如set
char\u val=date9

如上所述,简单的答案是:

date = input(monyy,date9.);
加上:

put date=yymmdd.;
之所以这样做有效,而你没有这样做,是因为SAS中存在一个常见的误解。日期9。他是个告密者。在输入语句中,它为SAS解释器提供了一组翻译命令,它可以发送给编译器,将文本转换为正确的数字,一旦应用了正确的格式,这些数字就会像日期一样。格式只是数字(或字符)的可见表示形式。因此,通过使用YYMMDD,您混淆了输入函数,将格式而不是信息传递给它,并且可能得到了一个有用的错误,即:

Invalid argument to INPUT function at line... etc...
这完全没有告诉你下一步该做什么

总之,将字符日期表示为YYMMDD。在SAS中,您需要:

  • 更改信息-
    date=input(星期一,日期9.)
  • 应用格式-
    put date=YYMMDD10
  • 格式如

    date9. 
    

    将文本转换为sas日期时,对输入命令无效。你可以用

    Date = input( cdate , ANYDTDTE11.);
    

    用于转换。

    此代码有助于:

    data final; set final;
    
    first_date = INPUT(compress(char_date),date9.); format first_date date9.;
    
    run;
    

    我个人曾在SAS上试用过它

    如果你无法发表评论,请不要使用答案。获得足够的声誉,然后发表评论。@JonathanDrapeau另一方面,这可能是一次诚实的回答,而不是评论。我有一个类似于“1961-11-20”的输入字符变量,我想作为日期来阅读。这个解决方案有效,而其他解决方案没有。同意,这个解决方案对字符日期戳也更有效。
    Date = input( cdate , ANYDTDTE11.);
    
    Date = input( cdate , ANYDTDTE10.); 
    
    data final; set final;
    
    first_date = INPUT(compress(char_date),date9.); format first_date date9.;
    
    run;