【问题标题】:Date calculations in SASSAS 中的日期计算
【发布时间】:2012-06-26 23:51:43
【问题描述】:

我想将 1 天添加到任意 SAS 日期。我有以下有效的代码,但我想知道是否有对这样的日期计算的内置支持:

proc fcmp outlib=whatever;  
function lastDayInYear(d);  
    if datdif(d,mdy(12,31,year(d)),'ACT/365')=0 then return(1); else return(0);  
endsub;  

function advanceDate(d);
    if d=. then return(.);
    if lastDayInYear(d) then
        return(mdy(1,1,year(d)+1));
    else
        return(datejul(juldate7(d)+1));
endsub;
quit;

【问题讨论】:

    标签: sas


    【解决方案1】:

    日期只是数字,所以要提前一天,你只需,嗯,加 1。

    您在哪里找到该代码?说说用大锤敲碎坚果吧……

    【讨论】:

    • 虽然向 SAS 日期添加和减去数字有效并且应该在未来继续有效,但它利用了 SAS 已选择一个整数在内部表示它的事实。应该始终使用 INTNX 进行日期操作。在 SAS 决定更改它的不太可能但可能的情况下,如果您使用函数而不是数学运算,您的代码仍将继续工作。
    • 确实如此。 SAS 也可能决定在 300 年后将其所有命令切换到 Fino-Ugric,但我尽量不要太担心。
    【解决方案2】:

    Itzy 是对的...只需添加 1。如果您想进行更高级的日期计算,可以使用 intnx()intck() 函数。

    例如

    data _null_;
      tomorrow            = date() + 1;
      same_day_next_month = intnx('month',date(),1,'same');
      first_day_next_week = intnx('week' ,date(),1,'beginning');
      last_day_of_year    = intnx('year' ,date(),0,'end');
    
      put _all_; 
    run;
    

    【讨论】:

      【解决方案3】:

      在 SAS 中,没有 DATE 或 DATETIME 数据类型,此类值存储为通用数值数据类型,其中对于日期:存储的数字表示从表示的日期到 1960 年 1 月 1 日之间的天数。对于日期时间,它类似,只有数字秒的存储。您将在下面的代码中看到这一点。 人类可读的日期、时间和日期时间表示是通过 SAS 日期/时间格式实现的。 如需进一步解释,请在网络和文档上搜索 SAS 日期。

      回到你的问题:要在代表 DATE 的值上加一天,只需进行数学加法:+1。

      data _null_;
          length mydate mydatetime 8;
          mydate='1jan1960'd;
          mydatetime='1jan1960:00:00:00'dt;
          nextdate = mydate + 1;
          nextminute = mydatetime + 60;
          put mydate 8. +4 mydate yymmdds10.;
          put nextdate 8. +4 nextdate yymmdds10.;
          put mydatetime 12. +4 mydatetime datetime.;
          put nextminute 12. +4 nextminute datetime.;
      run;
      

      【讨论】:

        猜你喜欢
        • 2020-04-08
        • 1970-01-01
        • 1970-01-01
        • 2021-11-25
        • 1970-01-01
        • 1970-01-01
        • 2015-12-05
        • 1970-01-01
        • 2015-01-10
        相关资源
        最近更新 更多