yyyymm转换为完整的sas date(dd / mm / ccyy) - SAS

时间:2014-02-14 12:34:52

标签: date format sas

我试图从SAS(ccyymm)的字段数字中获取本月的最后一天。

例如,

201401将是31-01-2014。

我设法将字段显示为日期类型字段(尽管仍显示为ccyymm),并在PROC SQL SELECT语句中使用以下代码

year_month_field INFORMAT YYMMN6. AS year_month_date

我认为我从另一个问题中找到了一些代码,这些问题应该在我能够获得完整日期时给我这个月的最后一天。

INTNX ( MONTH , year_month_date , 1) -1 

这会有用吗?如果没有任何其他建议将不胜感激。

1 个答案:

答案 0 :(得分:3)

请注意将yyyymm转换为“月末的最后一天”MMMYYYY格式之间的区别,具体取决于yyyymm是字符还是数字变量。

data test;
yyyymm_character='201401';
yyyymm_numeric=201401;

date1=intnx('month', input(yyyymm_character, yymmn6.), 1)-1;
date2=intnx('month', input(put(yyyymm_numeric,6.), yymmn6.), 1)-1;
format date1 date2 date9.;
/*date1=date2=31jan2014*/
run;

或者,您可以使用intnx函数的内置选项自动将任何输入日期设置为相应月份的最后一天。使用'e',如下所示。

data test;
yyyymm_character='201401';
yyyymm_numeric=201401;

date1=intnx('month', input(yyyymm_character, yymmn6.), 0, 'e');
date2=intnx('month', input(put(yyyymm_numeric,6.), yymmn6.), 0,'e');
format date1 date2 date9.;
/*date1=date2=31jan2014*/
run