Parameter · Client Connection Defaults / Locale and Formatting
lc_monetary
Sets the locale for formatting monetary amounts. An empty string means use the operating system setting.
- Default:
C - Type: string
- Applies: Session (any user)
In plain words
Decides how money amounts look: which currency symbol, and which separators. It affects the money data type and the L (currency symbol) pattern in to_char.
For DBAs and operators
Accepts an operating-system locale name (SELECT * FROM pg_collation or locale -a shows what exists). Empty means inherit from the server environment; initdb writes the OS locale.
The trap is the money type: it stores an integer number of the smallest currency unit, and how many fractional digits that means comes from lc_monetary. Restoring a dump into a server with a different lc_monetary can misread amounts (for example a locale with zero fractional digits such as ja_JP). This is one reason numeric is the recommended type for money.
to_char(1234.5, 'L9G999D99') uses lc_monetary for L; G and D come from lc_numeric. Output examples below assume the locale is installed on the server.
How to change it
Any user can change it for their session with SET.