PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:quale tipo di dati dovrebbe essere utilizzato per la valuta?

La tua fonte non è in alcun modo ufficiale. Risale al 2011 e non riconosco nemmeno gli autori. Se il tipo di denaro fosse ufficialmente "scoraggiato", PostgreSQL lo direbbe nel manuale, ma non è così.

Per una fonte più ufficiale , leggi questo thread in pgsql-general (di questa settimana!), con dichiarazioni di sviluppatori principali tra cui D'Arcy J.M. Cain (autore originale del tipo di denaro) e Tom Lane:

Risposta correlata (e commenti!) sui miglioramenti nelle versioni recenti:

  • Rapporto Jasper:impossibile ottenere il valore per il campo 'x' della classe 'org.postgresql.util.PGmoney'

Fondamentalmente, money ha i suoi (molto limitati) usi. Il Wiki di Postgres suggerisce di evitarlo in gran parte, ad eccezione di quei casi strettamente definiti. Il vantaggio rispetto a numeric è prestazioni .

decimal è solo un alias per numeric in Postgres e ampiamente utilizzato per i dati monetari, essendo un tipo di "precisione arbitraria". Il manuale:

Il tipo numeric può memorizzare numeri con un numero molto elevato di cifre. È particolarmente consigliato per la memorizzazione di importi monetari e altre quantità in cui è richiesta l'esattezza.

Personalmente, mi piace memorizzare la valuta come integer che rappresentano i centesimi se i centesimi frazionari non si verificano mai (in pratica dove il denaro ha senso). È più efficiente di qualsiasi altra delle opzioni menzionate.