24 時間の時間値を分に変換しようとしています
から:
(TIME)
17:00:00
16:55:00
17:30:00
に:
(NUM)
1060
993
1038
現在、時間値に 60 を掛けてい17*60
ます16.55*60
。17.30*60
どうすればこれを達成できますか? 私はそれを正しくやっていますか?そして、私は何を間違っていますか?
24 時間の時間値を分に変換しようとしています
から:
(TIME)
17:00:00
16:55:00
17:30:00
に:
(NUM)
1060
993
1038
現在、時間値に 60 を掛けてい17*60
ます16.55*60
。17.30*60
どうすればこれを達成できますか? 私はそれを正しくやっていますか?そして、私は何を間違っていますか?
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;
動作します。
これが SQL とどう関係しているのかはわかりませんが、一般的に、時間は午前/午後のインジケータで 0 ~ 12 ではなく 0 ~ 23 であると仮定すると、この疑似コードは
( 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
1 日の始まり (真夜中、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