我正在尝试将24小时时间值转换为分钟
自:
(TIME)
17:00:00
16:55:00
17:30:00
要:
(NUM)
1060
993
1038
目前,我将时间值乘以60 17*60
,16.55*60
,17.30*60
我将如何做到这一点?我做得对吗?我做错了什么?
答案 0 :(得分:2)
SAS时间值以秒为单位存储。如果它真的是'时间'值,无论如何,而不是字符串。因此,你可以分数60,而不是乘以。
data want;
input timeval TIME9.;
minutes=timeval/60;
format minutes BEST12.;
format timeval TIME9.;
put timeval= minutes=;
datalines;
17:00:00
16:55:00
17:30:00
;;;;
run;
如果它不是作为时间值(数字)存储而是作为字符串存储,则需要INPUT(timeval,TIME9。)才能这样做;所以
minutes = input(timeval,TIME9.)/60;
会起作用。
答案 1 :(得分:0)
不知道这与SQL有什么关系,但一般来说,假设小时是0-23而不是0-12,带有am / pm指示符,这个伪代码
( 60.0 * hours ) // convert 0-23 hours to minutes
+ minutes // minutes don't need conversion
+ ( seconds / 60.0 ) // convert 0-59 seconds to fractional minute
应该从一天的开始(午夜,00:00:00)给你一个分数的分数。如果你有一个上午/下午指标,你需要将其考虑在内,如下所示:
( 60.0 * ( hours + ( isPM ? 12 : 0 ) ) ) // convert 0-23 hours to minutes
+ minutes // minutes don't need conversion
+ ( seconds / 60.0 ) // convert 0-59 seconds to fractional minutes