如何在SAS中将日期格式d.m.yyyy转换为dd.mm.yyyy?

时间:2016-03-25 09:56:26

标签: date sas leading-zero

我有一个输入文件,我的日期没有前导零(如25.3.2016),但我想将它们转换为DDMMYYYYP10格式。

是否有任何格式,信息,功能等可以帮助我?

我正在使用SAS Enterprise Guide 4.3。

3 个答案:

答案 0 :(得分:2)

确实没有任何“转型”。你需要的只有两件事:

  1. 适当的信息(在您的情况下,ANYDTDTE10.应该这样做),以便SAS在阅读数据时充分识别日期
  2. 输出格式(您要求DDMMYYP10.)显示日期,前提是它们已正确导入上述信息。
  3. 插图:

    data dates;
      format mydate DDMMYYP10.;
      input mydate ANYDTDTE10.;
      datalines;
    25.3.2016
    run;
    
    proc print;run;
    

    结果:

    Obs mydate 
    1   25.03.2016 
    

    当然,如果您正在阅读外部数据(我认为是您的情况),您将需要INFILE语句而不是DATALINES,但结果将是相同的。

    请记住,输出格式只是格式。您可以随意更改它们,而不会影响基础数据。所以关键在于 informat

答案 1 :(得分:0)

SAS旨在将日期存储为“SAS日期”,这是一个数字变量,即自1960年1月1日以来的天数。假设您有一个SAS日期(而不是一个看起来像一个字符变量的字符变量)日期),应该直接更改用于此变量的格式。请注意,这实际上并不会对值进行转换,只会更改用于在打印时显示值的格式等。

36   data want;
37     mydate="1Mar2016"d;
38     put mydate=;
39     format mydate ddmmyyp10.;
40   run;

mydate=01.03.2016

编辑:我重读了你的问题并意识到你可能没有SAS数据集作为输入,而是有一个文本文件?如果是这样,您可以使用ddmmyy10信息阅读25.3.2016之类的日期。下面使用ddmmyy10 informat读取文本文件中的值,然后使用ddmmyyp10格式将其格式化为句点分隔符:

115  data want;
116    input mydate ddmmyy10.;
117    put mydate=;
118    format mydate ddmmyyp10.;
119    cards;

mydate=01.03.1960
NOTE: The data set WORK.WANT has 1 observations and 1 variables.

121  ;
122  run;

答案 2 :(得分:0)

我的输入是数据集,所以这对我有用:

data dates; 
    set My_data;
        format date1 DDMMYYP10.;
        date1 = input (date, anydtdte10.);

run;