РекомендуетсяPostgreSQL

Дата и время: timestamptz

Момент времени и местное расписание — разные данные. PostgreSQL timestamptz хранит момент, но не исходное название часового пояса.

Проверено Изменено

Плохо

CREATE TABLE meeting (starts_at text);
-- '09.11.2026 10:00' без формата и часового пояса

Хорошо

CREATE TABLE meeting (
  starts_at timestamptz NOT NULL,
  time_zone text NOT NULL
);
-- '2026-11-09T10:00:00+03:00', 'Europe/Moscow'

Почему это важно

Без зоны одна строка может означать разные моменты. Для будущего повторяющегося расписания нужен местный час и название зоны, а не только одна UTC-метка.

Когда применять

PostgreSQL 18: timestamptz — события и аудит; date — календарная дата; timestamp without time zone вместе с зоной и правилом повтора — локальное расписание. Не добавляйте зону к дате рождения. Денежные типы вынесены в отдельное правило database.money.

Кто что делает

Человек

Определяет, хранится ли точный момент, местная дата или повторяющееся расписание.

AI-агент

Выбирает типы по согласованной семантике, проверяет преобразования зон и неоднозначное местное время.

Как проверить у себя

  • Проверены преобразования UTC, разные зоны и переходы летнего времени?
  • Различаются дата, момент и повторяющееся расписание?
ПервоисточникиИстория изменений на GitHub

Дата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.