将字符串列'dd.mm.yyyy hh:mm:ss'转换为SAS日期格式'dd.mm.yyyy'

时间:2017-02-02 14:30:10

标签: sas

我需要编写一个将符号数据转换为数据格式的脚本。我有一个包含date列的表格,其中包含28.01.2017 09:23:14等字符串。我需要将它们转换为日期格式28.23.2017。 我试过了:

data SMS_STAT;
    set SMS_STAT;
    date = input(date, DDMMYY9.);
    put date = DDMMYY9.; 
 run;

另外,我在dateput中尝试了不同的格式,但这没有帮助:它转换为.

我已将28.01.2017 09:23:14收录到28.01.2017所以现在,我想从中做出约会。

2 个答案:

答案 0 :(得分:3)

让我们创建一个名为DATE的字符变量的数据集,其值为:28.01.2017 09:23:14

data have ;
  date='28.01.2017 09:23:14';
run;

如果您只想获取日期部分并将其保留为字符串,则只需使用SCAN()或SUBSTR()函数。

data want;
  set have ;
  date = scan(date,1,' ');
run;

如果要创建实际日期变量,则需要创建一个新变量,因为日期需要数字变量而不是字符变量。您可以使用INPUT()函数将当前字符串读入日期。然后,您可以附加您希望SAS显示数据的任何格式。

data want ;
  set have ;
  date2 = input(scan(date,1,' '),ddmmyy10.);
  format date2 mmddyyp10. ;
run;

如果您只想将其保留为字符串并反转日期和月份字段,那么使用SUBSTR()函数可能更容易。

data want ;
  set have ;
  substr(date,1,5) = substr(date,4,2)||'.'||substr(date,1,2) ;
run;

答案 1 :(得分:0)

实际上,最后,我来到了这个解决方案:

dates = substr(date, 1, 10);
d=input(dates,DDMMYY10.);
format d DATE9.;