在SAS中将非标准日期转换为SAS日期

时间:2014-10-31 01:05:52

标签: date sas substr

我在数据中有一个日期变量。变量中的值格式不正确。我想将它们转换为SAS日期格式,如datetime9。

日期

2013年11月2日上午10:00
2012年10月6日上午11:00 2002年8月26日18:00 PM
2012年3月22日上午07:00

2 个答案:

答案 0 :(得分:2)

有一些功能需要了解。

  1. scan(str,n) - 这会从字符串中拉出第n个单词。

  2. catt(str1,str2,str3) - 这会连接字符串。

  3. input(str,informat) - 使用信息将字符串转换为数字

  4. dhms(d,h,m,s) - Day Hour Minute Second。日期和时间部分等于日期时间。

  5. 同样DDMONYYYY是informat = date9.

    HH:MM <AM|PM>是informat = time.

    因此...

    data test;
    format date $20.;
    date = "Nov 2 2013 10:00AM"; output;
    date = "Oct 6 2012 11:00AM"; output;
    date = "Aug 26 2002 18:00PM"; output;
    date = "Mar 22 2012 07:00AM"; output;
    run;
    
    data test;
    set test;
    format day date9. time time. date2 datetime.;
    day = input(catt(scan(date,2),scan(date,1),scan(date,3)),date9.);
    time = input(scan(date,4),time.);
    date2 = dhms(day,hour(time),minute(time),second(time));
    run;
    

答案 1 :(得分:1)

data any;
  attrib datevar format=date9.;
  infile cards;
  input datevar ANYDTDTM20.;
  datevar=datepart(datevar);
  cards;
Nov 2 2013 10:00AM 
Oct 6 2012 11:00AM 
Aug 26 2002 18:00PM
Mar 22 2012 07:00AM
;run;