ddmmmyyyyhhmmss
我有 2 个SAS 格式的时间戳。我怎样才能找到两者之间的细微差别?
我已经尝试过 INTCK fn('分钟',date1,date2)。这是工作。但时间戳似乎有 spmeformatting 错误。
看起来您的时间戳值是具有日期时间值的数字变量。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
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 |
+------------------+------------------+---------+