Menu

PostgreSQL timestamp: Without Time Zone and Input Rules

Updated on

In PostgreSQL, timestamp means timestamp without time zone. It stores date and clock-time fields, but no zone or offset. If input includes a time-zone offset, PostgreSQL ignores it for a value determined to be timestamp without time zone. Use timestamptz when the value must represent a specific instant. See PostgreSQL’s date/time type documentation.

Range and precision

timestamp without time zone uses 8 bytes and supports values from 4713 BC through 294276 AD. Its resolution is one microsecond. An optional precision p retains 0 to 6 fractional-second digits:

timestamp(p) without time zone

If p is omitted, the column retains the full available fractional precision.

An offset is ignored

The timestamp type declaration determines how PostgreSQL interprets an input literal; the server does not infer the type from the presence of an offset in the string. This example fixes the session zone to UTC so the instant and the offset-free clock fields can be compared:

SET TIME ZONE 'UTC';

SELECT TIMESTAMP WITHOUT TIME ZONE '2026-07-01 09:00:00-04:00' AS wall_clock,
       TIMESTAMP WITH TIME ZONE '2026-07-01 09:00:00-04:00' AS instant_utc;
wall_clock instant_utc
2026-07-01 09:00:00 2026-07-01 13:00:00+00

The first value keeps the written clock fields and discards the offset. The second converts the offset to UTC. If the original region such as America/New_York must be retained for future daylight-saving rules, store that region name separately; neither timestamp type preserves the original input zone name.

When to use timestamp without time zone

Use timestamp for a wall-clock date and time whose fields should not be shifted by the session time zone. Examples include a local store-opening time on a dated record or a value whose time-zone interpretation is handled elsewhere. For events that must sort and compare as instants across regions, use timestamptz.