無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

8.2. 通貨型

money 型は貨幣金額を固定精度の小数点で格納します。 表8-3 を参照してください。 小数点精度はデータベースの lc_monetary 設定で決定されます。この表が示すように範囲は小数点2桁を想定しています。 '$1,000.00' などの典型的な通貨書式の他、整数、浮動小数点リテラルなど様々な書式の入力を受け付けます。 出力形式は通常は "典型的な" 通貨書式となりますが、ロケールによって異なります。

表 8-3. 通貨型

型名 格納サイズ 説明 範囲
money 8バイト 貨幣金額 -92233720368547758.08 から +92233720368547758.07

このデータ型の出力はロケールにより変動しますので、 lc_monetary 設定が異なるデータベースに money データをロードする場合には動作しない可能性があります。 この問題を防ぐためには、ダンプを新しいデータベースにリストアする前に、 lc_monetary がダンプを行ったデータベースと同じまたは等価であることを確認してください。

numeric int そして bigint 型は money 型にキャストすることができます。 real 型や double precision 型は最初に numeric 型にキャストした後に行なう必要があります。以下に例を示します。

SELECT '12.34'::float8::numeric::money;

しかしこれは推奨されません。浮動小数点数値は丸めの可能性がありますので貨幣を扱うために使用すべきではありません。

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

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

money 型の値を別の money 型の値で除算すると、結果は double precision 型(通貨ではなく純粋な数値)になります。 除算では通貨の単位は相殺されます。


powered by SEO.CUG.NET