Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 在SAS中将非标准日期转换为SAS日期_Date_Sas_Substr - Fatal编程技术网

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

Date 在SAS中将非标准日期转换为SAS日期,date,sas,substr,Date,Sas,Substr,数据中有一个日期变量。变量中的值格式不正确。我想将它们转换为SAS日期格式,如datetime9 日期 2013年11月2日上午10:00 2012年10月6日上午11:00 2002年8月26日下午18:00 2012年3月22日上午7:00有一些功能需要了解 扫描(str,n)--从字符串中提取第n个单词 catt(str1、str2、str3)——它连接字符串 输入(str,informat)——使用informat将字符串转换为数字 dhms(d,h,m,s)--日时分秒。日期加上时间部

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

日期

2013年11月2日上午10:00
2012年10月6日上午11:00
2002年8月26日下午18:00

2012年3月22日上午7:00

有一些功能需要了解

  • 扫描(str,n)--从字符串中提取第n个单词

  • catt(str1、str2、str3)——它连接字符串

  • 输入(str,informat)——使用informat将字符串转换为数字

  • dhms(d,h,m,s)--日时分秒。日期加上时间部分等于日期时间

  • 而且
    ddmonyyyyy
    是informat=
    date9.

    HH:MM
    是信息=
    时间。

    所以


    如果该值变为2013-11-26 14:45:15怎么办?您仍然可以使用扫描功能。它有一个可选的第三个参数,即分隔符。MDY()与DHMS()类似,但具有月、日和年。在SAS文档中查看它们。另外,
    time.
    informat应与该时间配合使用。它显示语法错误,语句将被忽略。当我用时间。Lu Yu,这些信息可以将您的示例转换为SAS日期时间值:ANYDTDTM、E8601DT、IS8601DT和ymddttt我不确定您的评论是什么意思,Lu Yu。如果日期时间值为“2013-11-06 11:05:12”,您仍然可以使用ANYDTDTM信息
    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;
    
    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;