SAS yyyymmdd到月份的最后日期

时间:2014-11-24 03:32:03

标签: sas

我更新了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;

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

一些事情。

  1. input()将字符转换为数字。

  2. 您正在强制SAS将YYYY,MM,DD和日期的字符转换为数字变量。我确定你在LOG中看到了那个效果的注释。

  3. 您将在下个月的最后一天到来。当前+ 1.您想要当前+0。

  4. 试试这个

    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;