Использую TypeORM.
Я определяю дату создания записи с помощью:
@CreateDateColumn()
createdAt: Date;
В такой конфигурации createdAt сохраняется как timestamp without time zone (UTC). Однако я заметил, что можно явно указать тип timestamptz, чтобы сохранять дату с учётом таймзоны.
Вопрос:
Какой подход считается best practice в продакшене — использовать timestamp или timestamptz?
Пример проблемы:
@Column({ type: 'timestamp' })
expiresAt: Date;
Допустим, я сохраняю значение колонки
expiresAt вручную:
expiresAt = new Date(Date.now() + 30 * 60 * 1000); // +30 минут
new Date() создаёт объект с локальной таймзоной, а createdAt — в UTC. В результате в одной таблице появляются две даты с разной семантикой — это нарушает консистентность данных.
Итоговый вопрос:
Как правильно настроить работу с датами и таймзонами в TypeORM и PostgreSQL, чтобы избежать подобных несостыковок?