我更新了yyyymmdd变量,例如20141123手动。 并将20141123转换为23NOV2014。当我试图找到30NOV2014的月份的最后一天并将其存储为enddate时,我遇到了一些问题。我的方法是使用intnx()。而
data _null_;
format yyyymmdd $8.;
yyyymmdd = '20141123';
yyyy = put(substr(yyyymmdd, 1, 4), $4.);
yy = put(substr(yyyymmdd, 3, 2), $2.);
mm = put(substr(yyyymmdd, 5, 2), $2.);
dd = put(substr(yyyymmdd, 7, 2), $2.);
date = put(mdy(mm, dd, yyyy), date9.);
enddate = put(intnx('month',date,1,'end'), date9.);
run;
感谢您的帮助。
答案 0 :(得分:4)
一些事情。
input()将字符转换为数字。
您正在强制SAS将YYYY,MM,DD和日期的字符转换为数字变量。我确定你在LOG中看到了那个效果的注释。
您将在下个月的最后一天到来。当前+ 1.您想要当前+0。
试试这个
data _null_;
format yyyymmdd $8.;
yyyymmdd = '20141123';
yyyy = input(substr(yyyymmdd, 1, 4), $4.);
yy = input(substr(yyyymmdd, 3, 2), $2.);
mm = input(substr(yyyymmdd, 5, 2), $2.);
dd = put(substr(yyyymmdd, 7, 2), $2.);
date = mdy(mm, dd, yyyy);
put date date9.;
enddate = put(intnx('month',date,0,'end'), date9.);
put enddate;
run;