SAS:将日期转换为年月代码

时间:2016-07-11 12:52:11

标签: sas format

如何将06JAN2005(作为日期格式)转换为200501(作为数字)

4 个答案:

答案 0 :(得分:1)

请注意,SAS中只有两种不同的变量类型 - 字符和数字。日期存储在数字变量中,通常格式化为用户可读日期。具体而言,日期存储为自01JAN1960以来的天数。

因此,如果您已将某个数字格式化为日期,并希望其格式不同(但仍然是数字),则只需更改格式即可。

正如乔的评论所说 - 我无法看到你提供的日期和你想要的数字之间的关系(也许你有错字?)。但下面的代码将演示如何简单地更改格式以更改数字的外观:

data _null_;
  format date1 best.
         date2 yymmddn6.
         date3 date9.   
         ;
  date1 = '06JAN2005'd;
  date2 = '06JAN2005'd;
  date3 = '06JAN2005'd;
  put date1= date2= date3=;
run;

给出:

date1=16442 date2=050106 date3=06JAN2005

答案 1 :(得分:1)

如果你想要一个显式数值,你可以在日期变量上使用日期函数,正如所指出的那样,它是SAS可以理解的数字日期值。

newdatevar = 100 *年(olddatevar)+月(olddatevar)

答案 2 :(得分:-1)

试试这个:

data a;
  attrib 
    v_input format=date.
    v_output_n format=8.;
  v_input = '06JAN2005'd;
  v_output_n = put(v_input,yymmn6.);
run;

答案 3 :(得分:-1)

如果你的意思是你需要一年||月,那么这样的事情应该有效:

data two;
set one;  
    order_month = month(date);
    order_year = year(date);
    order = put(compress(order_month||order_year),6.)-0;
run;

免责声明,我建议您只是格式化其他正确的内容,这样您就不需要将日期表示为数字。如果你想要添加或减去日期的增量,你可能也想查看intx函数