如何在 sas studio 中减去两个日期?

How to subtract two dates in sas studio?

我需要帮助解决一个问题。

我需要在 sas studio 中减去两个日期。我有下一个:

%let date_star = %SYSFUNC( DATETIME());

%let date_end = %SYSFUNC( DATETIME());

但我现在不知道如何减去这些变量。

感谢您的帮助。

使用INTCK() function to return the number of interval boundaries of a given kind that lie between two dates, times, or datetime values. The possible values of interval are listed in Date and Time Intervals.

%MACRO want;  
 
    %let date_start = %SYSFUNC(DATETIME());

    data _null_;
        rc=SLEEP(10,1); /* Sleep for 10 seconds */
    run;
    
    %let date_end = %SYSFUNC(DATETIME());
    
    %put %sysfunc(intck(second, &date_start., &date_end.));

%MEND; 

%want;

结果是 10 秒,符合预期。

所以你还没有真正在那里创建任何变量,只是宏变量。通常你会想使用 SAS 代码来处理数据,而不是宏代码,但你可以在紧要关头做到这一点。

您也没有两个 DATE 值。 SAS 将日期存储为天数。相反,您有两个 DATETIME 值。 DATETIME() 函数 returns 自 1960 年以来的秒数。因此两个日期时间值之间的差异将是一个以秒为单位的数字。

DATETIME() 返回的日期时间值将包括秒的小数部分。要在宏代码中执行浮点运算,您需要使用 %SYSEVALF() 函数。默认情况下用于评估条件的 %EVAL() 函数(如在 %IF 语句中)仅处理整数运算。

%let elapsed_time=%sysevalf(&date_end - &date_star);

如果您想查看以小时、分钟和秒为单位的值,则可以对其应用格式。

%put Elasped time was %sysfunc(putn(&elapsed_time,time15.3));