如何在SAS Enterprise Guide中添加连字符(以日期格式输入)?

时间:2014-06-23 18:46:07

标签: sas

我在SAS中有一个表,其中包含一列日期但不是典型的日期格式(DD-MM-YY)。例如,其中一个是

  

21JUN2012:00:00:00

我能做什么,使其格式为

  

21君12

?我正在使用SAS Enterprise Guide,所以我知道我必须选择计算列,但我不知道如何从那里开始。我正在考虑使用TRANWRD,但我似乎无法使用它。

感谢您的帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

  • 右键单击要转换的列,然后选择“属性”。
  • 将类型更改为“数字”,然后在警告提示中单击“是”以确定精度。
  • 将论坛更改为日期。
  • 点击Informats; “类别”下的选定值应为“日期”。
  • 将信息更改为DDMMYYSw。
  • 在“属性”下,指定总宽度为10
  • 点击格式; “类别”下的选定值应为“日期”。
  • 将格式更改为DDMMYYSw。
  • 在“属性”下,指定总宽度为10。
  • 点击确定
  • 如果预览结果窗口中的转换结果正确, 单击“提交更改”。

Reference

答案 1 :(得分:0)

SAS中有许多日期格式和可用的信息来更改显示的日期格式。格式的完整列表可以在here in the SAS documentation中找到。所需的格式为ddmmyyd.,您可以将格式应用于日期值(请参见col1_示例)。

对于日期时间值,您需要在应用格式之前使用DATEPART函数提取日期值(请参见下面的col2_和col3_示例)。

如果日期以文本形式提供,则需要对其应用信息,以将其转换为SAS日期值,然后可以使用PUT语句将所需的日期格式应用于该值。包括将该值转换回文本(请参见下面的col4_示例)。

data date_infile;
    infile datalines delimiter=',';
    input col1_date :date9. col2_dtime :datetime18. col3_dtime :datetime18. col4_text $18.;
    format col1_date date9. col2_dtime col3_dtime datetime18.;
    datalines;
21jun2012,21JUN2012:00:00:00,21JUN2012:12:34:56,21JUN2012:00:00:00
11aug2012,11AUG2012:00:00:00,11AUG2012:01:23:45,11AUG2012:00:00:00
05oct2019,05OCT2019:00:00:00,05OCT2019:01:23:45,05OCT2019:00:00:00
;
run;

data date_results;
    set date_infile;
    format col1_date col2_date col3_date col4_date ddmmyyd.;
    col2_date = datepart(col2_dtime);
    col3_date = datepart(col3_dtime);
    col4_date = datepart(input(col4_text, datetime18.));
    col4_date_as_text = put(put(datepart(input(col4_text, datetime18.)), ddmmyyd.), $8.);
run;