PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL :quel type de données doit être utilisé pour la devise ?

Votre source n'est en aucun cas officielle. Il date de 2011 et je ne reconnais même pas les auteurs. Si le type d'argent était officiellement "déconseillé", PostgreSQL le dirait dans le manuel - ce qui n'est pas le cas.

Pour une source plus officielle , lisez ce fil de discussion dans pgsql-general (depuis cette semaine !), avec des déclarations de développeurs principaux, dont D'Arcy J.M. Cain (auteur original du type d'argent) et Tom Lane :

Réponse connexe (et commentaires !) sur les améliorations apportées aux versions récentes :

  • Rapport Jasper :impossible d'obtenir la valeur du champ 'x' de la classe 'org.postgresql.util.PGmoney'

Fondamentalement, money a ses usages (très limités). Le Postgres Wiki suggère de l'éviter en grande partie, sauf pour les cas étroitement définis. L'avantage par rapport au numeric est la performance .

decimal est juste un alias pour numeric dans Postgres, et largement utilisé pour les données monétaires, étant de type "précision arbitraire". Le manuel :

Le type numeric peut stocker des nombres avec un très grand nombre de chiffres. Il est particulièrement recommandé pour stocker des montants monétaires et d'autres quantités où l'exactitude est requise.

Personnellement, j'aime stocker la devise en tant que integer représentant les cents si les cents fractionnaires ne se produisent jamais (essentiellement là où l'argent a du sens). C'est plus efficace que n'importe quelle autre des options mentionnées.