SAS(24小时)时间转换为分钟



我正在尝试将24小时时间值转换为分钟

发件人:

(TIME)
17:00:00 
16:55:00
17:30:00

收件人:

(NUM)
1060
993
1038

目前我正在将时间值乘以60 17*6016.55*6017.30*60

我该如何做到这一点?我做得对吗?我做错了什么?

SAS时间值存储为秒。如果它真的是一个"时间"值,而不是字符串。因此,您可以将DIVIDE除以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;

会起作用。

不知道这与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

相关内容

  • 没有找到相关文章