7

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

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

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

4

7 回答 7

15

格式如

date9. 

或者

mmddyy10. 

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

Date = input( cdate , ANYDTDTE11.);

或者

Date = input( cdate , ANYDTDTE10.); 

用于转换。

于 2014-07-30T05:28:18.113 回答
11

您不需要 substr 或 strip。

input(monyy,date9.);
于 2013-03-26T21:11:10.113 回答
3

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

date = input(monyy,date9.);

加上:

put date=yymmdd.;

这行得通的原因而你所做的却没有,是因为 SAS 中的一个常见误解。日期 9。是一个信息。在 INPUT 语句中,它为 SAS 解释器提供了一组翻译命令,它可以发送给编译器以将您的文本转换为正确的数字,一旦应用了正确的 FORMAT,它就会看起来像一个日期。格式只是数字(或字符)的可见表示。因此,通过使用 YYMMDD.,您将 INPUT 函数交给了 FORMAT 而不是 INFORMAT,从而混淆了它,并且可能得到了一个有用的错误,上面写着:

Invalid argument to INPUT function at line... etc...

这绝对没有告诉你下一步该做什么。

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

  1. 更改信息 -date = input(monyy,date9.);
  2. 应用格式 -put date=YYMMDD10.;
于 2014-03-14T17:09:01.867 回答
1

输入(char_val,date9.);

您可以考虑使用 input(char_val, worddate.) 将其转换为 word 格式。

您可以在此页面http://v8doc.sas.com/sashtml/lrcon/zenid-63.htm中获得很多信息

于 2013-04-02T11:28:36.180 回答
1

尝试

data _null_; 
   monyy = '05May2013'; 
   date = input(substr(strip(monyy),1,9),date9.);
   put date=date9.; 
   run;
于 2013-03-26T21:02:55.287 回答
1

此代码有助于:

data final; set final;

first_date = INPUT(compress(char_date),date9.); format first_date date9.;

run;

我个人在SAS上试过

于 2015-02-02T13:46:58.453 回答
0
input(char_val,current_date_format);

您可以在显示时指定任何日期格式,例如 setchar_val=date9.;

于 2013-12-17T07:59:40.513 回答