Колонка created_at типа timestamptz. Как получить дату события в UTC (тип date), чтобы результат не зависел от таймзоны сессии?

Acreated_at::date
B(created_at AT TIME ZONE 'Europe/Moscow')::date
CDATE_TRUNC('day', created_at)::date
D(created_at AT TIME ZONE 'UTC')::date
Правильный ответ. Приведение timestamptz к date зависит от таймзоны; для UTC сначала используйте AT TIME ZONE 'UTC'.

Разбор

Когда вы делаете created_at::date, PostgreSQL сначала переводит timestamptz в локальное время таймзоны сессии, затем отбрасывает время. Чтобы получить UTC-дату, явно переведите момент времени в UTC: (created_at AT TIME ZONE 'UTC')::date.

Проверь себя · 1/3разбор после ответа
Как получить начало текущей недели (недельный бакет) по текущей дате в PostgreSQL?
Тренировать SQL в Telegram

Ещё вопросы по теме «Даты и время»