- data tm;
- length d $ 100. ;
- infile cards dlm=',';
- input d;
- cards;
- 2013-01-01 00:00:00
- 2013/1/1
- 2013-1-1
- 2012.01.01
- 2012.1.1
- 2013/1/1
- 2013/1/1
- 20120101
- 18991231(乱码)
- Sun Sep 15 00:00:00 C
- Tue Apr 23 00:00:00 C
- Thu Aug 08 00:00:00 C
- Sat Nov 23 00:00:00 C
- Wed Jan 09 00:00:00 C
- Wed Mar 27 00:00:00 C
- ;
- run;
- data tm2;
- set tm;
- reg1 = prxparse("/[a-zA-Z]{3} [a-zA-Z]{3} \d\d/");
- date = input(d,yymmdd10.);
- if missing(date) then do;
- if prxmatch(reg1,d) then date2 = compress(substr(d,5,6));;
- end;
- format date yymmdd10.;
- run;
复制代码
date = input(d,yymmdd10.); 可以解决前边的所有日期形式,但是
Sun Sep 15 00:00:00 C
Tue Apr 23 00:00:00 C
Thu Aug 08 00:00:00 C
Sat Nov 23 00:00:00 C
这种形式的日期,没有年份,不能合并,上面程序可以把这种形式的日期挑选出来,你根据实际情况自己修改代码,把年份加上就行。你提问题不给足够的信息,别人都不知道怎么做。只写一个乱码,谁能处理。