将两个数字转换为日期格式

时间:2014-11-25 04:32:41

标签: sas

我有两个数字变量,年和月。年变量有2010年和月变量等数据有1和10之类的数据(1到9在前面没有零)。我需要将这两个变量组合起来,然后将其转换为YYMMn6。格式,以便我可以根据日期合并另一个数据集。

例如,输入为:

2012 1 2012 10

我想要的输出是(YYMMn6。格式): 201201 201210

到目前为止我尝试的代码:

year1=close_year;
year2=clse_month;
yearmonth = cats(of year1-year2); *this results in character variable;
DATE2 = INPUT(PUT(yearmonth,8.),YYMMN6.);
FORMAT DATE2 YYMMN6.;

当然我收到一条错误消息。感谢。

2 个答案:

答案 0 :(得分:3)

使用数字变量我使用MDY函数而不是put和诸如此类的东西;你在这里遇到了麻烦,因为20101不是有效的YYMM值。

dateval = mdy(monthval,1,yearval);
format dateval yymmn6.;

请注意' final'日期格式与您用于从信息输入日期变量的任何内容完全无关;

与SAS的观点没有区别
dateval = input('01JAN2010',DATE9.);
format dateval YYMMN6.;

dateval = input('201001',YYMMN6.);
format dateval YYMMN6.;

输入/信息将值转换为自1960年1月1日以来的数字天数。最终格式告诉SAS如何显示新创建的号码。

答案 1 :(得分:1)

您可以使用Joe提到的答案

    如果您以后需要,
  • 可以让您灵活地更改为其他格式, 没有任何麻烦。
  • 将变量保持为数字格式,因此数学或 日期功能很容易应用。

或者您可以使用

mydate=put(mdy(monthval,1,yearval),yymmn6.);

如果你想要以char格式输出。

两者都是正确的。根据您的要求选择。