将SAS列转换为日期格式

时间:2018-10-09 08:56:35

标签: date sas

我有一列最好的日期。格式例如201301是2013年1月,201402是2014年2月。

是否可以将其转换为date9。格式?

我最终希望只列出年份,即2013、2014、2015、2016等。

我的主表称为“ file1”,带日期的列称为“ date1”,而我希望仅包含年份的列称为“ year1”。 我尝试过:

     data file1;
       year1= date1
       format year1 YEAR4.
     run;

但这没有用。它给了我两个标题为year1和date1的空白单元格的输出。

3 个答案:

答案 0 :(得分:1)

由于date1变量不是SAS日期,即您仅具有代表2013年1月的数值201301,因此您应该能够使用一些数学函数,例如:

data want;
   set file1;
   year1 = int(date1/100);
run;

答案 1 :(得分:0)

这有点尴尬,因为您必须从数字转换为字符然后再次返回:

data _null_;
  mydate = 201301;
  mydate9 = input(put(mydate,6.),yymmn6.);
  format mydate9 date9.;
  put _all_;
run;

答案 2 :(得分:0)

您应该首先检查它是否为6位数而不是yymmn6。日期格式。如果是yymmn6。格式,您只需添加格式year4。或date9。否则同意user667589:

data test;
  format date1 year4.;
  set file1;
run;

data test2;
  format mydate9 date9. myyear year4.;
  mydate = 201301;
  mydate9 = input(put(mydate,6.),yymmn6.);
  myyear = mydate9;
run;