在遇到日期yyyy-mm-dd与时间hh:mm:ss需要合并的时候,可以将日期时间合并为标准字符"yyyy-mm-ddThh:mm:ss"后,利用以下日期时间格式进行转化为可运算的日期时间(变量b),也可以通过put转化为任意输出的字符格式,如datetime18.
data test1;
a="2004-01-31T12:55:00";
b=input(a,e8601dt.);
c=put(b,datetime18.);
put a b c;
run;
data test2;
a="2004-01-31T12:55:00";
b=input(a,is8601dt19.);
c=put(b,datetime18.);
put a b c;
run;
data test3;
a="2004-01-31T12:55:00";
a1=input(scan(a,1,"T"),yymmdd10.);
a2=input(scan(a,2,"T"),hhmmss8.);
b=dhms(a1,0,0,a2);
c=put(b,datetime18.);
put a b c;
run;
不规则的日期时间,由于均用函数进行转换,实际应用是也可直接用嵌套函数一步完成:
**********先获得日期时间型,后转为字符******;
data _null_;
a="2018-6-5";
b="8:11";
dt1=input(a,yymmdd10.);
time1=input(b,time8.);
datim3=dhms(dt1,0,0,time1);
datim4=put(datim3,is8601dt20.);
put time1 dt1 datim3 datim4;
run;
*******先获得日期时间字符型,后转为数值******;
data _null_;
a="2018-6-5";
b="8:11";
dt1=input(a,yymmdd10.);
dt2=put(dt1,yymmdd10.); *可以识别转换月份与日期小于10的格式;
time1=input(b,time8.);
time2=put(time1,tod8.); *小时小于会补0,凑足2位;
datim1=dt2||'T'||time2;
datim2=input(datim1,is8601dt20.);
put time1 time2 dt1 dt2 datim1 datim2 ;
run;