我正在尝试从 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
这行得通吗?如果没有任何其他建议,我们将不胜感激。
丹
最佳答案
请注意下面将 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
关于date - yyyymm 转换为完整的 sas 日期 (dd/mm/ccyy) - SAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21779578/