1

ddmmmyyyyhhmmss我有 2 个SAS 格式的时间戳。我怎样才能找到两者之间的细微差别?

我已经尝试过 INTCK fn('分钟',date1,date2)。这是工作。但时间戳似乎有 spmeformatting 错误。

4

2 回答 2

3

看起来您的时间戳值是具有日期时间值的数字变量。SAS 以秒为单位存储数据时间值。因此,您只需减去两个变量并除以 60 秒/分钟即可将单位从秒转换为分钟。

seconds = datetime2 - datetime1 ;
mintues = (datetime2 - datetime1)/60 ;

您还可以使用 INTCK() 函数以许多不同的日期、时间或日期时间单位计算间隔。默认是计算跨越的间隔边界的数量,但您可以指定连续方法让它计算准确的分钟数。

minutes = intck('minute',datetime1,datetime2);
minutes = intck('minute',datetime1,datetime2,'continuous');

例子:

32    data test;
33      datetime1='01JAN2019:00:00:20'dt;
34      datetime2='01JAN2019:00:01:01'dt;
35      seconds=datetime2-datetime1;
36      minutes=(datetime2-datetime1)/60;
37      minutes2=intck('minute',datetime1,datetime2);
38      minutes3=intck('minute',datetime1,datetime2,'continuous');
39      put (_all_) (=/);
40      format datetime: datetime24.3 ;
41    run;


datetime1=01JAN2019:00:00:20.000
datetime2=01JAN2019:00:01:01.000
seconds=41
minutes=0.6833333333
minutes2=1
minutes3=0
于 2019-12-03T14:00:05.173 回答
0

INTCK函数的结果是在指定参数(年、月、日、分钟和其他)中测量的两个日期或日期时间之间的差异。所以如果你想知道分钟的差异,你应该使用日期时间,而不是日期。例如:

data temp;
   format date1-date2 date.;
   format date4-date5 datetime.;
   date1=mdy(1,1,2019);               /*date*/
   date2=today();                     /*date*/
   date3=intck('day',date1,date2);    /*difference between date1 and date2 in days*/
   date4=dhms(mdy(1,1,2019),0,0,0);   /*datetime*/
   date5=datetime();                  /*datetime*/
   date6=intck('minute',date4,date5); /*difference between date4 and date5 in minutes*/
run;

结果:

+---------+---------+------------------+------------------+-------+--------+
|  date1  |  date2  |      date4       |      date5       | date3 | date6  |
+---------+---------+------------------+------------------+-------+--------+
| 01JAN19 | 03DEC19 | 01JAN19:00:00:00 | 03DEC19:11:33:52 |   336 | 484533 |
+---------+---------+------------------+------------------+-------+--------+

或者,如果您想要格式化结果,您可以使用 intck 来了解秒数的差异,例如:

data temp;
   format date1 date2 datetime.
          date3 time.;

   date1=datetime();
   date2=dhms(mdy(1,1,2019),0,0,0);
   date3=intck('second',date2,date1);   /*it will work cause time represent in sas as num of seconds*/
run;

结果:

+------------------+------------------+---------+
|      date1       |      date2       |  date3  |
+------------------+------------------+---------+
| 01DEC19:00:00:00 | 01JAN19:00:00:00 | 8016:00 |
+------------------+------------------+---------+
于 2019-12-03T08:40:58.217 回答