PostgreSQL timestamp: Without Time Zone and Input Rules
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.