【问题标题】:How to convert char character to date in SAS (University)?如何在 SAS(大学)中将 char 字符转换为日期?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多