【SAS NOTE】“:”&时间处理

 1 data mysas.guanhui_nov;
 2     infile 'E:\SAS\mysas\visit_guanhui_nov.txt' dlm='|' firstobs=2;
 3     input user :$11. serv_num:$11. log_date :$14. log_IP :$15. content :$50.;
 4     my_year=input(substr(log_date,1,4),4.);
 5       my_mon=input(substr(log_date,6,2),2.);
 6     my_day=input(substr(log_date,9,2),2.);
 7     my_date=mdy(my_mon,my_day,my_year);
 8     format my_date MMDDYY10.;
 9     date_time=DHMS(my_date,hour(my_time),minute(my_time),second(my_time));
10     format date_time datetime18.;
11 run;
12 proc print data=mysas.guanhui_nov (firstobs=1 obs=10);
13 run;

对于不固定长度的变量,冒号用于读满规定长度字符或者遇到变量分隔符,先到为准。另外对于非标准格式的日期,可以用字符串处理函数substr+input+mdy+format+dhms等来实现重组标准时间格式变量。

还有input 变量长度后面的"."不能丢。

 我的实现:

 1 data guanhui.uservisit_nov;
 2     infile 'E:\a.txt' dlm='|' firstobs=2;
 3     input user :$11. serv_number :$11. login_time :$14. log_IP :$15. content :$50.;
 4     visit_yymmdd=substr(login_time,1,10);
 5     visit_y=substr(visit_yymmdd,1,4);
 6     visit_month=substr(visit_yymmdd,6,2);
 7     visit_d=substr(visit_yymmdd,9,2);
 8     visit_hm=substr(login_time,11,15);
 9     visit_h=scan(visit_hm,1,':');
10     visit_min=scan(visit_hm,2,':');
11     visit_time=DHMS(MDY(visit_month,visit_d,visit_y),visit_h,visit_min,0);
12 run;
13 proc print data=guanhui.uservisit_nov (firstobs=1 obs=5);
14     format visit_time datetime18.;
15     where serv_number='134********';
16 run;

1、冒号用来处理不定长变量。

2、substr函数用来从长字符串中取出部分。

3、scan函数用来取用分隔符分割的字符串。

4、mdy函数用来组合date日期。

5、dhms用来组合完整日期。

原文地址:https://www.cnblogs.com/colipso/p/2880678.html