我正在尝试从SAS(ccyymm
)中的数字字段获取月份的最后一天。
例如201401将为2014年1月31日。
我已经设法将字段显示为日期类型字段(尽管仍显示为ccyymm),并且在 PROC SQL
SELECT statement
year_month_field INFORMAT YYMMN6. AS year_month_date
我认为我从另一个提出的问题中找到了一些代码,一旦我能获得完整的日期,该代码应该给我该月的最后一天。
INTNX ( MONTH , year_month_date , 1) -1
这样行吗?如果没有其他建议,将不胜感激。
和
请注意,根据yyyymm是字符型还是数字型变量,如何将yyyymm转换为下面的“每月的最后一天” MMMYYYY格式之间的差异。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句