DB Internals AtlasPostgreSQL 18.6 Home About

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.

Related parameters

lc_numeric lc_time lc_messages

All Client Connection Defaults parameters