sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL:Který datový typ by měl být použit pro měnu?

Váš zdroj není v žádném případě oficiální. Pochází z roku 2011 a já ani nepoznávám autory. Pokud by byl typ peněz oficiálně "odrazován", PostgreSQL by to řekl v manuálu - což není.

Pro oficiálnější zdroj , přečtěte si toto vlákno v pgsql-general (z tohoto týdne!), s prohlášeními hlavních vývojářů včetně D'Arcy J.M. Caina (původního autora typu peníze) a Toma Lanea:

Související odpovědi (a komentáře!) o vylepšeních v posledních verzích:

  • Jasperova zpráva:nelze získat hodnotu pro pole 'x' třídy 'org.postgresql.util.PGmoney'

V podstatě money má své (velmi omezené) použití. Postgres Wiki navrhuje z velké části se tomu vyhnout, s výjimkou těch úzce definovaných případů. Výhoda oproti numeric je výkon .

decimal je pouze alias pro numeric v Postgresu a široce používaný pro peněžní data, protože jde o typ s "libovolnou přesností". Manuál:

Typ numeric může ukládat čísla s velmi velkým počtem číslic. Zvláště se doporučuje pro ukládání peněžních částek a dalších množství, kde je vyžadována přesnost.

Osobně rád ukládám měnu jako integer představující centy, pokud se zlomkové centy nikdy nevyskytují (v podstatě tam, kde peníze dávají smysl). To je efektivnější než kterákoli jiná ze zmíněných možností.



  1. SQLite - Nelze otevřít soubor databáze

  2. Vytváření nových tabulek v IRI Workbench

  3. Je vnitřní spojení stejné jako ekvi-spojení?

  4. Spojení tří tabulek pomocí MySQL