Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date %PUT-以数字宏变量的格式打印日期和时间_Date_Sas_Format - Fatal编程技术网

Date %PUT-以数字宏变量的格式打印日期和时间

Date %PUT-以数字宏变量的格式打印日期和时间,date,sas,format,Date,Sas,Format,我遇到了这个问题,看起来很容易 我有一个宏,比如: %macro test; /* I start from it */ %let time_ = %sysfunc(time()); %let date_ = %sysfunc(date()); %let time1 = %sysfunc(time()); data _null_; timedelay = sleep(5, 1); run; %le

我遇到了这个问题,看起来很容易

我有一个宏,比如:

%macro test;

    /* I start from it */
    %let time_ = %sysfunc(time());
    %let date_ = %sysfunc(date());

    %let time1 = %sysfunc(time());
        data _null_;
            timedelay = sleep(5, 1);
        run;
    %let time2 = %sysfunc(time());

    %let diff = %sysevalf(&time2 - &time1);

    %put Timenow: &time_;
    %put DateNOw: &date_;
    %put TimeDifference: &diff;
    /*Above works as I want*/

    /* What I want to have */
    %put Timenow: %sysfunc(put(&time_, time13.)); /* Timenow: 22:06:00 */
    %put DateNOw: %sysfunc(put(&time_, date9.)); /* DateNOw: 27FEB2019 */
    %put TimeDifference: %sysfunc(put(&time_, time13.)); /* TimeDifference: 00:00:05 */


%mend;

%test;
因此,基本上是这样的,例如,相反地,
%sysfunc(put(&time_u,time13.)类似的结果:
22:06:00
有没有一种简单直接的方法


谢谢

SYSFUNC有一个格式选项。考虑一下这是否对你有用。< /P>
%let time1 = %sysfunc(datetime());
   data _null_;
      timedelay = sleep(5, 1);
      run;
%let time2 = %sysfunc(datetime());

%let diff = %sysfunc(sum(&time2,-&time1),time13.);
%put NOTE: &=diff;

或者如果您想使用PUTN函数

%put TimeDifference: %sysfunc(putN(%sysevalf(&time2-&time1),time,13));

SYSFUNC有一个格式选项。考虑一下这是否对你有用。< /P>
%let time1 = %sysfunc(datetime());
   data _null_;
      timedelay = sleep(5, 1);
      run;
%let time2 = %sysfunc(datetime());

%let diff = %sysfunc(sum(&time2,-&time1),time13.);
%put NOTE: &=diff;

或者如果您想使用PUTN函数

%put TimeDifference: %sysfunc(putN(%sysevalf(&time2-&time1),time,13));

对我来说,重要的是从差异中推导出来——它也用于不同的地方。我对%sysfunc中的该选项有新的了解。很抱歉,我没有进一步澄清。@MateuszKonopelski听起来您只需要用PUTN函数替换PUT。这正是我所需要的。请更改您原来的帖子,我会将其标记为答案。谢谢请注意,在
putn()
的参数中不需要使用
%sysevalf()
%sysfunc()
调用将把方程推到正常的SAS处理中,作为计算
putn()
函数调用的一部分进行计算。从差异中推导公式对我来说很重要-它也用于不同的位置。我对%sysfunc中的该选项有新的了解。很抱歉,我没有进一步澄清。@MateuszKonopelski听起来您只需要用PUTN函数替换PUT。这正是我所需要的。请更改您原来的帖子,我会将其标记为答案。谢谢请注意,在
putn()
的参数中不需要使用
%sysevalf()
%sysfunc()
调用将把方程推入正常的SAS处理,作为计算
putn()
函数调用的一部分进行计算。必须将PUTC/putn函数与sysfunc一起使用。必须将PUTC/putn函数与sysfunc一起使用。