SQLLab
Глоссарий/TIMESTAMPTZ
Типы данныхСредний

TIMESTAMPTZ

Тип данных для хранения даты и времени с часовым поясом. Рекомендуется вместо TIMESTAMP.

Синтаксис
column TIMESTAMPTZ DEFAULT NOW()
column TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP

Объяснение

TIMESTAMPTZ хранит момент времени в UTC, при чтении конвертирует в текущий часовой пояс сессии. TIMESTAMP без TZ — «наивное» время без информации о зоне. Проблема при работе с пользователями в разных TZ. Правило: всегда используй TIMESTAMPTZ. Исключение — когда важно время «как написано», без привязки к зоне.

Пример

-- Сравнение типов
SELECT
  NOW()::TIMESTAMP,     -- локальное время без TZ
  NOW()::TIMESTAMPTZ,   -- UTC + TZ
  NOW() AT TIME ZONE 'Europe/Moscow';  -- перевод в московское время