如何从 SAS 中的日期中提取月份

Kel*_*lly 2 date sas

我试图从 SAS 中的日期中提取一个月,但到目前为止,我所有的新月份变量都缺失。

我尝试在 SAS 中使用 Month() 函数的一些组合,但到目前为止它只是缺失。日期格式如下:01/31/2017 (MMDDYY10.)

我努力了

month = month(end_date) 

Month =catx('/',put(month(end_date),z2
Run Code Online (Sandbox Code Playgroud)

我希望月份显示为数字 (01) 或 3 个字母代码 (JAN),目前它只是缺少 (.)

提前致谢!

Ric*_*ard 5

要month()返回缺失值,end_date变量必须是数字且缺失。如果 end_date 是字符变量,则日志将显示invalid numeric data。

使用该monname3.格式将日期值转换为 $3。字符值mon

monthname = put (end_date, monname3.);
Run Code Online (Sandbox Code Playgroud)

其他替代方案是:

  • 保持日期值不变并更改格式,或者
  • 将日期值映射到月份值的第一天,并设置格式

例如:

end_date_copy = end_date;
format end_date_copy monname3.;

end_date_month = intnx('month', end_date, 0);
format end_date_month monname3.;
Run Code Online (Sandbox Code Playgroud)

您最终做什么取决于下游在报告或聚合中如何使用mon 。