更新时间:2026-10-21 GMT+08:00
分享

货币类型

货币类型用于存储带有固定小数精度的货币金额。

表1中显示的范围基于两位小数精度。该类型支持多种输入格式,包括整型、浮点型或者典型的货币格式(如“$1,000.00”)。根据区域字符集,输出一般是最后一种形式。

表1 货币类型

名称

描述

存储空间

范围

money

货币金额。

8字节

-92233720368547758.08 ~ +92233720368547758.07

numeric、int和bigint类型的值可以直接转换为money类型。对于real和double precision类型,建议先转换为numeric类型,再转换为money类型,例如:

1
2
3
4
5
gaussdb=# SELECT '12.34'::float8::numeric::money;
 money  
--------
 $12.34
(1 row)

这种用法是不推荐的。由于浮点数存在精度丢失风险,因此不应该用来处理货币类型。

money类型的值可以转换为numeric类型而不丢失精度。转换为其他类型可能丢失精度,并且必须通过以下两步来完成:

1
2
3
4
5
gaussdb=# SELECT '52093.89'::money::numeric::float8;
  float8  
----------
 52093.89
(1 row)

当两个money类型的值进行除法运算时,将返回double precision类型的结果(即一个纯数字,而不是money类型);货币单位会在运算过程中相互抵消。

相关文档