22009
Read PG 18 manual ↗invalid_time_zone_displacement_value
- SQLSTATE
- 22009
- Condition name
- invalid_time_zone_displacement_value
- Class
- Data Exception
- Source macro
- ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE
- Evidence
- Source path confirmed
English SQLSTATE atlas: authored explanations and source/runtime evidence are separate from the manual definitions. View source ↗
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.
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.
Sources
See the fixed source links and scope limits in the structured evidence record.
Source evidence
Evidence belongs to the frozen source and runtime versions listed here. It is not a runtime verification of the selected manual version.
22009 is invalid_time_zone_displacement_value in SQLSTATE Class 22.
Method: Read fixed definition.
The date/time binary receive path checks the GMT displacement against the supported TZDISP_LIMIT and emits 22009 when it is outside that range.
Method: Read the complete displacement guard.
Limits: This is a displacement-range error, distinct from malformed date text or session TimeZone configuration.
The locked catalogue records 22009 from 7.4 without proving an exact implementation introduction date.
Method: Use catalogue boundary.
- src/backend/utils/errcodes.txt · REL_18_6 ·
724edf9bde9d356724ad384a2e196edc3c9f80f7 raw/calls/REL_18_6.jsonl· ·- src/backend/utils/adt/date.c · REL_18_6 ·
724edf9bde9d356724ad384a2e196edc3c9f80f7
Message templates
ERROR · message.timezone
Primary
time zone displacement out of range
Reproduction & repair cases
No reproduction case is attached to this condition.
Recorded runtime evidence
No runtime observation is attached to this entry.
Definition snapshot: english-manuals:de0fa4ed880a437adb5ca12ec9b… · English manual source