web-dev-qa-db-ja.com

通貨値のPostgreSQLおよびMONEYデータ型

プロジェクトでは、列price MONEY NOT NULL列を含むテーブルを作成しました。そして、浮動小数点数(つまり、IEEEの丸めの問題)とは異なり、小数を適切に処理すると思っていましたが、$9.94(数値)ではなく、データベースから返される9.94(文字列) )。ドル記号を削除してフィールド値を手動で操作しなければならないのはばかげています。通貨記号なしでMONEY列を作成する方法はありますか?

そうでない場合、通貨の値を処理するのに最適なデータ型の置き換えは何ですか?

9
Yanick Rochon

これはどうですか?

金額の値は、精度を失うことなく数値にキャストできます。他の型への変換は精度を失う可能性があり、2つの段階で行う必要があります。

SELECT '52093.89'::money::numeric::float8;

ソース: http://www.postgresql.org/docs/9.1/static/datatype-money.html

9