https://wiki.postgresql.org/wiki/Don%27t_Do_This#Don.27t_use_money
お金を使わないでください
<tt style="font-family: monospace, monospace;">money</tt> データ型は、実際には通貨値の保存にはあまり適していません。数値、または (まれに) 整数の方が適切な場合があります。
なぜだめですか?
これは固定小数点型であり、machine int として実装されているため、演算が高速です。ただし、セント未満の端数 (または他の通貨の相当額) は処理されません。丸め動作はおそらくあなたが望むものではありません。
通貨を値とともに保存するのではなく、すべての Money 列にデータベースのlc_monetaryロケール設定で指定された通貨が含まれていると想定します。何らかの理由で lc_monetary 設定を変更すると、すべての Money 列に間違った値が含まれます。つまり、lc_monetary が「en_US.UTF-8」に設定されているときに「$10.00」を挿入すると、取得される値は「10,00 レイ」または lc_monetary が変更されている場合は「¥1,000」になる可能性があります。
値を数値として保存し、隣接する列で通貨を使用する方がよい場合があります。
いつ行うべきですか?
単一の通貨のみを使用し、セントの小数部分を処理せず、足し算と引き算だけを行う場合は、お金が正しいかもしれません。