如何将字符串日期'YYYYMM'转换为MonYY格式?

时间:2018-10-10 16:51:53

标签: sas enterprise-guide

我想将YYYYMM格式的字符串日期变量转换为MonYY格式的新变量。

例如,如果字符串为201810,则新变量将为OCT18(SAS中的monyy。格式)

示例: %let var = '201810';

如何创建一个新的变量,以所需的格式显示newVar

2 个答案:

答案 0 :(得分:2)

为什么要使用宏以及带引号的值?

'201810''OCT18'(在宏环境中)

%let var = '201810';
%let var_as_monyy = %sysfunc(quote(%sysfunc(putn(%sysfunc(inputn(%sysfunc(dequote(&var)),yymmn6)),monyy5.)),%str(%')));

%put &=var;
%put &=var_as_monyy;

201810 OCT18 (在宏环境中)

%let var = 201810;
%let var_as_monyy = %sysfunc(putn(%sysfunc(inputn(%sysfunc(dequote(&var))01,yymmn6)),monyy5.));

%put &=var;
%put &=var_as_monyy;
数据步骤和数据集上下文中的

'201810'日期字符串

%let var = '201810';
data want;
  date = input (&var, yymmn6.);
  format date monyy5.;
run;
proc print data=want;run;

答案 1 :(得分:1)

有两种方法,一种在数据步骤中显示,也可以用于创建宏变量和仅使用宏函数。

选项1:

%let var = '201810';

data demo;

y=input(&var., yymmn6.);
z=put(y, monyy5.);
call symputx('newVar', z);
run;

%put &newVar.;

选项2:

%let NewVar2 = %sysfunc(inputn(%sysfunc(dequote(&var)), yymmn6.), monyy5.);
%put &NewVar2.;