vb.net でSQLから計算結果を取得しようとしたら小数点以下がすっぽり落ちてしまった
環境
OS:Windows8.1
Visual Studio 2015
Oracle11g
やりかったこと
例えばある期間内の項目の件数を分(60)で割った値を取得したかった。
例)hogeテーブル
Code | ActiveTime | CountItem |
---|---|---|
001 | 2019-02-01 12:00:00 | 1 |
001 | 2019-02-01 12:01:00 | 1 |
002 | 2019-02-01 12:05:00 | 1 |
003 | 2019-02-01 12:07:00 | 1 |
… | … | … |
・SQL
--やや適当 SELECT SUM(CountItem ) / 60 as CountItem FROM hoge WHERE ActiveTime BETWEEN '2019-02-01 12:00:00' AND '2019-02-01 12:10:00'
たとえばSQLを実行すると0.4
が取れるとした場合、
vb上ではなぜか0
になってしまう。
※vbで受け取っている型はDecimal型。
※独自FWなのでvbは省略しますが、OracleDataReaderを使っても同様に小数点以下が落ちる。
結局60で割る処理を、SQLで計算するのではなく、vb側で実施することにして回避。
vb.netに慣れていないのもあるが、調べてても同様の事象を書いているサイトがなかった。
SQLであまり計算とかしないものなのかな。