当前位置: 首页 > 知识库问答 >
问题:

将日期格式更改为YYMMDD8。在SAS中用于日期计算

贺景铄
2023-03-14

我的数据集中有一个日期变量(当前为数字),它有三种类型的日期:

>

  • 仅年份(yyyy)

    if length(Date)=4 then DateF=mdy(1,1,substr(Date,1,4));  
    if length(Date)=6 then DateF=mdy(substr(Date,5,2),1,substr(Date,1,4));  
    if length(Date)=8 then DateF=mdy(substr(Date,5,2),substr(Date,7,2),substr(Date,1,4));  
    Date2=input(put(DateF,8.),YYMMDD8.);  
    format Date2 YYMMDD8.;
    

    有人能告诉我我的代码出了什么问题吗?谢谢!

  • 共有1个答案

    华聪
    2023-03-14

    因此,要调试代码,您可以首先尝试将您的一些假设打印到屏幕上。首先打印if语句的结果...

    data blah;
    
      format date best.;
    
      input date; 
    
      test1 = length(date);
      put test1=;
    
    datalines;
      2014
      201408
      20140829
    ;
    run;
    

    这给出:

    test1=12
    test1=12
    test1=12
    

    显然不是我们所期待的。当数字字段自动转换为字符变量时,它看起来像是12个字符长的字段,并且在转换时,在前面填充空格。我们可以通过将put语句替换为以下语句来检查这一点:

    test2 = "*" || length(cats(date)) || "*";
    put test2=;
    
    test2=*           4*
    test2=*           6*
    test2=*           8*
    
    data blah;
    
      format date best.;
    
    
      input date; 
    
      tmp_date = cats(date);
    
    
      if length(tmp_Date)=4 then DateF=mdy(1,1,substr(tmp_Date,1,4));  
      if length(tmp_Date)=6 then DateF=mdy(substr(tmp_Date,5,2),1,substr(tmp_Date,1,4));  
      if length(tmp_Date)=8 then DateF=mdy(substr(tmp_Date,5,2),substr(tmp_Date,7,2),substr(tmp_Date,1,4));  
    
      format Datef YYMMDD8.;
    
    datalines;
      2014
      201408
      20140829
    ;
    run;
    

    cats()函数将为我们进行转换,并修剪前导空格和尾随空格!超级有用...无论如何,希望这解释了哪里出了问题,以及以后如何调试自己的代码=)。

     类似资料:
    • 如何将此日期类型“Thu Feb 02 12:00:00 GMT-12:00 2012”更改为另一个日期类型“YYYY-MM-DD HH:MM:SS”?如果“Thu Feb 02 12:00:00 GMT-12:00 201 2”为字符串类型,如何转换“YYYY-MM-DD HH:MM:SS”的日期类型? java代码: 输出为字符串类型。我想获得日期类型输出,所以我添加了以下代码。

    • 我是SAS的新手,我有一个如下所示的数据集: 现在我想把这些数字转换成日期格式。然后找出由此得到的日期的差异(以天为单位)。我尝试了“通知”的方式,但没有取得任何进展。请帮助....

    • 问题内容: 我正在使用需要json日期格式的API。 我需要转换我的JavaScript日期 1970年1月17日星期六格林尼治标准时间+0100(浪漫标准时间) 以json日期格式 /日期(1405699200)/ 问题答案: 列各项可以吗?

    • 问题内容: 我有一个输出数据数组的PHP脚本。然后将其转换为使用函数。 我的问题是我的数组中有一个日期,但日期格式不正确。 我怎样才能在PHP中转换它呢? 代替上面的日期,我需要等效的JavaScript函数 新的Date() 当我输出上述内容时,我得到以下内容:“ Fri Jun 01 2012 11:08:48 GMT + 0100(GMT Daylight Time)”但是,如果我将PHP日