1

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

从:

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

到:

(NUM)
1060
993
1038

目前我将时间值乘以 60 17*60, 16.55*60,17.30*60

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

4

2 回答 2

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;

会工作。

于 2013-02-05T16:48:21.240 回答
0

不知道这与 SQL 有什么关系,但一般来说,假设小时是 0-23 而不是 0-12 带有上午/下午指标,这个伪代码

  ( 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
于 2013-02-05T18:51:31.643 回答