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

PostgreSQL:Hvilken datatype skal bruges til valuta?

Din kilde er på ingen måde officiel. Det stammer fra 2011, og jeg genkender ikke engang forfatterne. Hvis pengetypen officielt var "frarådet", ville PostgreSQL sige det i manualen - hvilket den ikke gør.

For en mere officiel kilde , læs denne tråd i pgsql-general (fra netop denne uge!), med udtalelser fra kerneudviklere, herunder D'Arcy J.M. Cain (oprindelig forfatter af pengetypen) og Tom Lane:

Relateret svar (og kommentarer!) om forbedringer i de seneste udgivelser:

  • Jasper-rapport:kan ikke hente værdi for felt 'x' i klassen 'org.postgresql.util.PGmoney'

Dybest set money har sine (meget begrænsede) anvendelser. Postgres Wiki foreslår stort set at undgå det, bortset fra de snævert definerede tilfælde. Fordelen i forhold til numeric er ydeevne .

decimal er kun et alias for numeric i Postgres, og i vid udstrækning brugt til monetære data, idet det er en "vilkårlig præcision"-type. Manualen:

Typen numeric kan gemme tal med et meget stort antal cifre. Det anbefales især til lagring af pengebeløb og andre mængder, hvor nøjagtighed er påkrævet.

Personligt kan jeg godt lide at gemme valuta som integer repræsenterer cents, hvis fraktionelle cents aldrig forekommer (dybest set hvor penge giver mening). Det er mere effektivt end nogen anden af ​​de nævnte muligheder.



  1. Installation af Percona XtraDB Cluster på CentOS 7

  2. Analyse af I/O-ydeevne for SQL Server

  3. WHERE-klausul vs ON ved brug af JOIN

  4. SÆT NAVNE utf8 i MySQL?