PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL:Qual tipo de dados deve ser usado para moeda?


Sua fonte não é oficial. Data de 2011 e nem reconheço os autores. Se o tipo de dinheiro fosse oficialmente "desanimado", o PostgreSQL diria isso no manual - o que não acontece.

Para uma fonte mais oficial , leia este tópico no pgsql-general (de apenas esta semana!), com declarações de desenvolvedores principais, incluindo D'Arcy J.M. Cain (autor original do tipo money) e Tom Lane:

Resposta relacionada (e comentários!) sobre melhorias em versões recentes:
  • Jasper Report:não foi possível obter o valor do campo 'x' da classe 'org.postgresql.util.PGmoney'

Basicamente, money tem seus usos (muito limitados). O Postgres Wiki sugere evitá-lo em grande parte, exceto para esses casos estritamente definidos. A vantagem sobre numeric é desempenho .

decimal é apenas um alias para numeric no Postgres, e amplamente utilizado para dados monetários, sendo do tipo "precisão arbitrária". O manual:

O tipo numeric pode armazenar números com um número muito grande de dígitos. É especialmente recomendado para armazenar valores monetários e outras quantidades onde a exatidão é necessária.

Pessoalmente, gosto de armazenar moeda como integer representando centavos se os centavos fracionários nunca ocorrerem (basicamente onde o dinheiro faz sentido). Isso é mais eficiente do que qualquer outra das opções mencionadas.