6

I'm changing a column in the database from "money" to "numeric" per some previous advice here.

Looking through the data types in postgres -- https://www.postgresql.org/docs/current/static/datatype-numeric.html -- I can't see any differences between numeric and decimal in the descriptions.

What is the difference between decimal and numeric, and is there any reason I should use numeric instead of decimal for prices in my database?

some1
  • 1,547
  • 8
  • 26
  • 45

1 Answers1

10

According to the manual they are the same.

The types decimal and numeric are equivalent. Both types are part of the SQL standard.

https://www.postgresql.org/docs/current/static/datatype-numeric.html

The difference lies in the SQL standard which allows for different behaviour:

NUMERIC must be exactly as precise as it is defined — so if you define 4 decimal places, the DB must always store 4 decimal places.

DECIMAL must be at least as precise as it is defined. This means that the database can actually store more digits than specified (due to the behind-the-scenes storage having space for extra digits). This means the database might store 1.00005 instead of 1.0000, affecting future calculations.

Difference between DECIMAL and NUMERIC

Community
  • 1
  • 1
Philip Couling
  • 13,581
  • 5
  • 53
  • 85