如何在SAS(大学)中将char字符转换为日期?

时间:2018-03-01 10:14:12

标签: string date sas type-conversion format

这是一个非常简单的问题,已经在几个博客中提到过。但是,我正在尝试各种各样的事情而且它不起作用。 Idk如果发生这种情况是因为我正在使用SAS大学,或者当我输入数值时我做错了什么。

我要做的是将字符串格式的列转换为日期格式。

/*Dataset for practice*/
data test;
  input date_1 $ value_1;
  cards;
20151102 1000
20151010 500
;
run;

data test_new; 
  set test; 
  date_1_new = input(date_1,yymmdd10.);
format date_1_new yymmdd10.;
run;

上面的脚本返回date_1_new的缺失值。对我来说似乎很奇怪的是,下面的代码使用数值,只需将数字转换为文本然后转换为日期。它正在发挥作用。这是相同的原则,但它确实有效。

/*Dataset for practice*/
data test;
  input date_1 value_1;
  cards;
20151102 1000
20151010 500
;
run;

data test_new; 
  set test; 
  date_1_new = input(put(date_1,8.),yymmdd10.);
format date_1_new yymmdd10.;
run;

为什么第一个代码不起作用?看起来我在做同样的事情...... 注意:使用yymmdd8时会发生同样的错误。

1 个答案:

答案 0 :(得分:0)

确保输入行实际上有空格,而不是字段之间的其他字符。这可能弄乱你原来的INPUT声明。

此外,您的INPUT()函数在信息中使用宽度10,但您的数据只有8个字符长。因此,如果变量的字符9或10中有一些非数字,非空格字符,则INPUT()函数调用将失败。