如何在 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));
我需要帮助解决一个问题。
我需要在 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));