sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:welk gegevenstype moet worden gebruikt voor valuta?

Je bron is op geen enkele manier officieel. Het dateert uit 2011 en ik herken de auteurs niet eens. Als het geldtype officieel "ontmoedigd" was, zou PostgreSQL dat in de handleiding zeggen - wat niet het geval is.

Voor een meer officiële bron , lees deze thread in pgsql-algemeen (van deze week!), met verklaringen van kernontwikkelaars, waaronder D'Arcy J.M. Cain (oorspronkelijke auteur van het geldtype) en Tom Lane:

Gerelateerd antwoord (en opmerkingen!) over verbeteringen in recente releases:

  • Jasper Report:kan geen waarde ophalen voor veld 'x' van klasse 'org.postgresql.util.PGmoney'

Kortom, money heeft zijn (zeer beperkte) toepassingen. De Postgres Wiki stelt voor om het grotendeels te vermijden, behalve in die nauw gedefinieerde gevallen. Het voordeel ten opzichte van numeric is prestaties .

decimal is slechts een alias voor numeric in Postgres, en wordt veel gebruikt voor monetaire gegevens, omdat het van het type "willekeurige precisie" is. De handleiding:

Het type numeric kan getallen met een zeer groot aantal cijfers opslaan. Het wordt vooral aanbevolen voor het opslaan van geldbedragen en andere hoeveelheden waar nauwkeurigheid vereist is.

Persoonlijk bewaar ik valuta graag als integer die centen vertegenwoordigen als fractionele centen nooit voorkomen (in feite waar geld zinvol is). Dat is efficiënter dan alle andere genoemde opties.



  1. Tijdstempel bijwerken wanneer rij wordt bijgewerkt in PostgreSQL

  2. Automatiseer back-up- en onderhoudstaken met het onderhoudsplan in SQL Server

  3. MySQL-groep per en bestel per

  4. Kan opgeslagen procedure 'dbo.aspnet_CheckSchemaVersion' niet vinden