【发布时间】:2018-08-09 09:11:33
【问题描述】:
这是一个非常简单的问题,已在多个博客中提出。但是,我正在尝试各种事情,但它不起作用。如果发生这种情况是因为我使用的是 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。
date_1_new = input(put(date_1, z8.),yymmdd10.);嗯,你可以,但格式化不会计算。 -
@pinegulf 刚刚尝试过......它没有用。我没有输入数字。正如您在我的帖子的第一部分所看到的,我使用了一个 char 变量(由 $ 定义)。这就是我尝试输入(date_1,yymmdd10.)的原因。在我的帖子的第二部分中,我展示了我将数字转换为字符串并使用了 input(),它确实有效。所以对我来说,第一个代码不起作用是没有意义的
-
哎呀。是的。放弃之前的评论。
-
我运行了你的两个示例,它们运行良好。尝试开始一个新的会话!
-
他们也为我工作。您是否在日志中收到任何可能提供线索的注释?
标签: string date sas type-conversion format