Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

<a id="database-time-money"></a>

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

## Коротко

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

## Плохо

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

## Хорошо

```sql
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`.

## Как проверить

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

## Человек

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

## Агент

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

## Источники

- [PostgreSQL: Documentation: 18: 8.5. Date/Time Types](https://www.postgresql.org/docs/18/datatype-datetime.html)

Уровень: Рекомендуется. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/database/postgres/rules/time-money.md)
