如何将日期显示为从.csv导入的DD MMM YYYY

时间:2017-04-05 18:56:00

标签: date csv sas

我有一个服务,它会获取.csv并将其处理为.sas7bdat。

我通过填写变量名,长度和指定输出位置来修改现有的.sas模板。

我有一个场景,其中.csv的日期格式为'DD MMM YYYY'。我需要将此格式保存到输出文件中。预定义格式允许'DDMMMYYY'和'DD-MMM-YYYY'。我在模板中尝试了这些格式类型。

以下是标准字符类型的模板:

TIMEOUT

如何修改此代码以输出日期,如下所示'01 JAN 2000'

修改

如何将此值作为字符值输出到.sas7bdat?

1 个答案:

答案 0 :(得分:0)

没有默认格式显示为DD MMM YYYY,因此需要自行滚动。我相信以下内容可以帮助您实现目标:

proc format;
picture ddmmmyy
  other= '%0d %b %Y' (datatype=date);
run;

data have;
  datevar='01 JAN 2000';
run;

data want;
  set have;
  actualdatevar=input(datevar,anydtdte11.);
  format actualdatevar ddmmmyy11.;
run;

给出:

enter image description here

请注意,您无法将字符变量转换为数字,因此您可能希望创建一个新变量然后删除旧变量(也可以重命名新变量,以便最终得到相同的命名变量)。

EDIT1:申请特定答案(现在情况更清楚)

以下内容应达到所需:

LIBNAME TempSrc "C:\Temp";

proc format;
picture ddmmmyy
  other= '%0d %b %Y' (datatype=date);
run;

proc import datafile="\\***\FileLocation\file.csv"
        out=mydata dbms=dlm replace;
        DELIMITER= ",";
        getnames=yes;
        options ExtendObsCounter=yes;
RUN;
/* if all you need to do is apply the format, you may be better using proc datasets */
DATA TempSrc.fileName;  
  set work.mydata;  
  format DATEVAR ddmmmyy11. ;
RUN;

EDIT2:转换为字符,以便在通用查看器中正确显示(没有自定义格式)

LIBNAME TempSrc "C:\Temp";

proc format;
picture ddmmmyy
  other= '%0d %b %Y' (datatype=date);
run;

proc import datafile="\\***\FileLocation\file.csv"
        out=mydata dbms=dlm replace;
        DELIMITER= ",";
        getnames=yes;
        options ExtendObsCounter=yes;
RUN;
/* convert numeric to character via rename */
DATA TempSrc.fileName;  
  set work.mydata (rename=(DATEVAR=DATEVAR2));  
  DATEVAR=put(DATEVAR2,ddmmmyy11.);
  drop DATEVAR2;
RUN;