SQLSTATE 22009Severity lowLab verified

Incident brief

Time zone displacement out of range

A timestamptz literal whose explicit UTC offset lies outside the valid range (about -15:59 to +15:59) raises this data exception; +16:00 is out of range.

Reproduced on PostgreSQL 18.4Verified 2026-07-24 (isolated lab, PostgreSQL 18.4)Reviewed by Verified against PostgreSQL 18.4 in an isolated lab environment

In 10 seconds

What
Time zone displacement out of range
What triggers it
Write a TIMESTAMP WITH TIME ZONE literal with an explicit offset beyond the allowed range, such as +16:00.
The fix
Use a valid UTC offset (within about +/-15:59).
Proof
Reproduced on PostgreSQL 18.4 → A single SELECT reproduces SQLSTATE 22009; the +16:00 displacement is rejected while the literal is parsed.

The fix

What to do right now

The immediate, application-level response to this error.

  • Use a valid UTC offset (within about +/-15:59).
  • Fix the source data or the offset generator so displacements stay in range; the server stores in UTC and renders in the session zone.
Fix — SQL
-- Use a UTC offset within the valid range.
SELECT TIMESTAMP WITH TIME ZONE '2026-01-01 12:00:00+02:00';

Related & next steps

Follow the thread

Everything this error touches — jump straight to the sibling error, term, runbook, or parameter.

Verification

PG 18.4
Last verified
2026-07-24 (isolated lab, PostgreSQL 18.4)
Reviewed by
Verified against PostgreSQL 18.4 in an isolated lab environment
Audit status
reviewed