将YYMM编号转换为日期以计算SAS中的月份间隔

时间:2018-01-10 11:11:07

标签: date sas formatting

我是SAS的新手,我有以下问题。我使用的数据库在两列中有两个日期,我应该计算几个月之间的差异。

这些日期的格式为YYMM,例如:200603是2006年3月,200612是2006年12月。 他们之间的差异应该是9个月。

我正在尝试使用日期差异创建一个新列(称为"差异")。我尝试了以下代码:

data TIMES.TEST;
set TIMES.INPUTS;    
difference = intck('month',input(fin_period,yymmn6.),input(period,yymmn6.));
run;

它会创建一个名为差异的新列(正确),但它全部用点填充。没有计算。我做错了什么吗?当我有这样的日期格式时,还有另一种计算两个日期之间差异的方法吗?

提前致谢。

我使用SAS Studio。

1 个答案:

答案 0 :(得分:0)

如果将periodfin_period存储为数字变量,则需要先将其转换为文本,然后才能应用yymmn6.信息将其转换为日期。

以下几个例子可能有助于使这一点更加清晰:

data inputs;
input period fin_period;
cards;
200603 200612
;
run;

/*Difference = .*/
data test;
set inputs;    
difference = intck('month',input(fin_period,yymmn6.),input(period,yymmn6.));
run;

data inputs2;
input period $ fin_period $;
cards;
200603 200612
;  
run;

/*Difference = -9*/
data test2;
set inputs2;    
difference = intck('month',input(fin_period,yymmn6.),input(period,yymmn6.));
run;

/*Difference = -9*/
data test3;
set inputs;    
difference = intck('month',input(put(fin_period,6.),yymmn6.),input(put(period,6.),yymmn6.));
run;