Postgresql Monetary Data Type
- The money type stores a currency amount with a fixed fractional precision;
- The fractional precision is determined by the database's lc_monetary setting. The range shown in the table assumes there are two fractional digits. Input is accepted in a variety of formats, including integer and floating-point literals, as well as typical currency formatting, such as '$1,000.00'. Output is generally in the latter form but depends on the locale.
Name
|
Storage Size
|
Description
|
Range
|
money
|
8 bytes
|
currency amount
|
-92233720368547758.08 to +92233720368547758.07
|
- Since the output of this data type is locale-sensitive, it might not work to load money data into a database that has a different setting of lc_monetary. To avoid problems, before restoring a dump into a new database make sure lc_monetary has the same or equivalent value as in the database that was dumped.
SELECT '12.34'::float8::numeric::money;
- However, this is not recommended. Floating point numbers should not be used to handle money due to the potential for rounding errors.
SELECT '52093.89'::money::numeric::float8;
- When a money value is divided by another money value, the result is double precision (i.e., a pure number, not money); the currency units cancel each other out in the division.
Comments
Post a Comment