Типы данныхСредний
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'; -- перевод в московское времяСвязанные термины
Анекдоты по теме
— А что такое BETWEEN? — «Дай мне всех, кому от 18 до 35 лет». Между 18 и 35 включительно.
Программист: я просто хотел удалить одну строку. База данных: ты удалил 2 миллиона. Программист: но я написал WHERE... База данных: WHERE 1=1 — это не условие.
— Зачем нужен ORDER BY? — Чтобы база данных не выдавала результаты в случайном порядке. Потому что «случайный» в базе данных — это «как бог на душу положит».