由于时间是字符格式,我在计算小时数方面遇到问题。
Booked_from($) booked_to($)
======================================
07:00 18:00
08:00 17:00
我想要这两个字段之间的区别并创建一个新字段“Hours”。
我的代码:
booked_Hours=intck(minutes,attendee.booked_to,attendee.booked_from)
但它出错了
答案 0 :(得分:3)
以下代码说明了使用intck
并使用信息将字符转换为数字的正确方法:
data _NULL_;
input Booked_from $ booked_to $;
minutes=intck('minutes',input(booked_from,time5.),input(booked_to,time5.));
hours=intck('hours',input(booked_from,time5.),input(booked_to,time5.));
put _all_;
datalines;
07:00 18:00
08:00 17:00
;
run;
正如我在评论中提到的,如果你想要'小时'那么你需要指定间隔类型'小时',而不是分钟。
另外,我已经颠倒了第二个和第三个参数的顺序,因为原始方法给出了负值。
答案 1 :(得分:2)
除了上一个答案,我还有一点需要补充。如果Booked_from是23:30而Booked_to是1:00,则必须使用条件语句来计算差异。在这种情况下,您将获得负值的差异值。
下面的代码可以帮助您解决此问题
data mins;
set <your dataset>;
attrib fromtime totime format=time5.;
fromtime=input(booked_from,time5.);
totime=input(booked_to,time5.);
if(totime < fromtime) then do;
min=intck('minutes',fromtime,'24:00't)+intck('minutes','00:00't,totime);
end;
else do;
min=intck('minutes',fromtime,totime);
end;
run;