SAS Datetime Input读取每行的相同日期

时间:2016-06-16 18:38:19

标签: sql datetime sas format

我试图读取许多数据文件,包括一列日期时间。当我读入所有文件时,datetime列包含相同的日期(2015年7月31日00:00:00,或SAS格式:1753920000),即使正在读入的数据文件在该列中有许多不同的日期时间。为什么我的代码会为每一行输出相同的日期?

代码:

%let type=40;    
%let year=2015;
%let months =07;
%let days = 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31;
%let filetype=.csv;

%macro import_files;

  %do K=1 %to 31; /*day*/
      %let nmbr = %scan(&type,1); 
      %let yr=%scan(&year,1);
      %let mnth=%scan(&months,1);
      %let day=%scan(&days,&K);
      %let exportfile = "C:\Users\Top&nmbr&yr&mnth&day&filetype";
      %let src = "\\2119\outfile";

    /* Import All files in that Alpha, Year and Month Group*/

      DATA work.RAW_DATA;
        INFILE &src firstobs=3 LRECL=1000 DELIMITER=',' MISSOVER DSD;
        INPUT city_cd : $CHAR3.
              shop_car_type_cd : $CHAR4.
              lor: ?? BEST2.
              arv_dt : ?? MMDDYY10.
              shop_dttm : ?? ANYDTDTM19.  /* This is the datetime that reads in the same date for every observation */

      RUN;
  %end;

%mend import_files;

%import_files;

CSV数据文件:

ATL CCAR    1   10:30   9/7/2015    01JUL2015:00:00:00

阅读SAS后:

ATL CCAR    1   37800   20338   1751500800

1 个答案:

答案 0 :(得分:0)

除非我遗漏了一些严重的内容,否则您的INPUT语句中列出了5个变量,但样本数据中有6个变量。哪一个是正确的?我也会将MISSOVER切换为TRUNCOVER ,.另外,请考虑为变量指定informat,而不是考虑如何阅读它。你没有得到任何错误,因为??这可以抑制任何错误。从代码中删除它们。我将在下面发布一个答案,以帮助您开始,但它可能不正确。

如上所述,除非您从Excel文件中复制和粘贴,否则您也没有CSV文件,这是您不应该做的。 Excel可能会从您的数据中添加/删除某些我们无法看到的可能导致问题的内容。

data have;
informat arv_dt mmddyy10. shop_dttm anydtdtm. time_data time.;
format shop_dttm datetime21. time_data time.;
INPUT
    city_cd           $
    shop_car_type_cd  $
    lor 
    time_data         
    arv_dt        
    shop_dttm;
cards;
ATL CCAR    1   10:30   9/7/2015    01JUL2015:00:00:00
;
run;

proc print data=have;
run;