Skip to content

22009 — invalid_time_zone_displacement_value

Source-backed reference for PostgreSQL SQLSTATE 22009.

22009

At a glance

22009 is invalid_time_zone_displacement_value. The fixed timetz_recv binary-input path rejects a GMT displacement outside the supported range.

Field Value
SQLSTATE 22009
Condition invalid_time_zone_displacement_value
Status active
Known present by 7.4
Locked snapshots 9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3
Macros ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE
Aliases

Meaning

22009 is invalid_time_zone_displacement_value. The confirmed timetz_recv guard checks the received GMT displacement against PostgreSQL’s supported limit; this is a binary input contract, not a generic session TimeZone setting error.

Messages

The confirmed guard raises ERROR with primary time zone displacement out of range. It has no fixed DETAIL or HINT in this source path. This page is source-only; no natural runtime observation is claimed.

Diagnosis

Inspect the supplied zone offset and the binary timetz receiver or protocol decoder that delivered it. Keep an invalid displacement distinct from a generic datetime field overflow or a session TimeZone setting.

Response

Validate and replace the offset in the client or binary input that supplied it; use a named zone only when the input contract supports that representation. This is an ERROR: in an explicit transaction, roll back the transaction or roll back to a savepoint established before the failing conversion before continuing. Validate at the client boundary before repeating the conversion. No runtime case was run for this page.

Versions

The locked catalogue records this condition from 7.4 in the listed formal snapshots and 19beta3; fixed source coverage is PostgreSQL 18.6.

22000, 22001, 22003, 22004

Sources

See the fixed source links and scope limits in the structured evidence record.