在SAS中将字符串转换为日期

Converting string to date in SAS

我已经创建了这个宏变量并打印了它:

%let date = input('22Aug2020',date9.);
%put &date;

但是当我打印它时,它打印:

input('22Aug2020',date9.)

哪里出错了?

这通常会满足您的需要 - 添加结尾的 d,tells SAS to interpret the value as a date

%let date = '22AUG2020'd;
%put &date.;

SAS 会将尾随 d 的 22Aug2020 解释为 SAS 日期,并在 99% 的时间内正确处理它。

您问题的直接答案是您忘记了宏变量是 text,因此 SAS 正按照您的要求进行操作。

如果你想要一个宏变量包含一个函数被解析,你使用%sysfunc.

%let date = %sysfunc(inputn(22AUG2020,date, 9));

inputn 是执行输入和 returns 数字(如您所愿)的函数。您可能会注意到两件事:

  • %SYSFUNC 不使用引号 - 将其关闭,除非您希望文本字符 "' 实际出现。它不用于分隔文本值。
  • INPUTN 有几种方法可以指定信息名称。您可以在一个参数中提供 date9.,或者您可以按照我的方式将其拆分,两者都可以。

但更好的方法是如 Reeza 所说 - 直接使用 '22AUG2020'd 指令。