Хранение времени с таймзоной (v1.0.0)

Хранение времени с таймзоной (v1.0.0)

Postgres не умеет хранить даты с таймзонами. TIMESTAMP WITH TIMEZONE - это (маленькая) ложь и правильно он называется TIMESTAMP IN UTC TIMEZONE. Если для задачи важна таймзона (создания чего-то, например, или напоминания) - её надо хранить отдельно.

Хранить таймзону можно либо либо в виде смещения в колонке INTERVAL, либо в виде строки. Первый вариант быстрее и (в общем случае) нагляднее для человека. Но он не учитывает политические изменения. Например, если пользователь в таймзоне Asia/Novosibirk сохранит какую-то дату в будущем, то она запишется как +07:00. Но если после этого, кто-то решит перевести Новосибирск на "+3 часа к Москве", то локальное представление этой даты не изменится. Что может быть нежелательным поведением.

Хранение таймзоны строкой решает эту проблему, но работа с ней будет медленнее и большинству людей таймзона Asia/Kolkata ничего не скажет.

Если не знаете что выбрать - интервал или строку - выбирайте интервал.