BigDecimal是Java的正确数据类型,如果要记录金钱数据,pgsql最好不要用money字段,而是用numeric字段,因为money字段超过1000会有样式变化,类似于1,000
基本上,money
有(非常有限的)用途。在Postgres的维基建议将在很大程度上避免它,除了那些狭义的案件。超过的优势numeric
是性能。
decimal
只是numeric
Postgres中的别名,并且广泛用于货币数据,是“任意精度”类型。手册:
该类型
numeric
可以存储数量非常大的数字。特别建议在需要精确度的情况下存储货币金额和其他数量。
就个人而言,integer
如果小数美分永远不会出现(通常在赚钱的地方),我喜欢将货币存储为代表美分的货币。这比任何其他提到的选项都更有效。
参考:
sql - Which datatype should be used for currency? - Stack Overflow