Как получить начало текущей недели (недельный бакет) по текущей дате в PostgreSQL?
A
DATE_TRUNC('day', current_date)B
DATE_TRUNC('month', current_date)C
current_date - INTERVAL '7 days'D
DATE_TRUNC('week', current_date)Правильный ответ.
DATE_TRUNC('week', ...) возвращает метку начала недели.Разбор
Функция DATE_TRUNC обрезает дату/время до начала указанного периода. Для недельных бакетов используйте DATE_TRUNC('week', current_date) (в PostgreSQL неделя начинается в понедельник).
Проверь себя · 1/3разбор после ответа
Вы строите дневной бакет
DATE_TRUNC('day', created_at) AS day. Какое выражение даст ключ для JOIN на «тот же день прошлой недели»?Ещё вопросы по теме «Даты и время»
- В таблице `events(user_id, created_at)` поле `created_at` типа `timestamp`. Как посчитать количество событий по дням?
- Есть таблица `orders(created_at, amount)`, где `created_at` типа `timestamp`. Как посчитать выручку по месяцам?
- В таблице `events(created_at)` нужно выбрать события за последние 7 дней относительно текущего момента (`current_timestamp`). Какое условие в `WHERE` корректнее?
- Колонка `created_at` имеет тип `timestamp`. Какой тип данных вернёт `DATE_TRUNC('day', created_at)`?
- В таблице `events(user_id, created_at)` колонка `created_at` типа `timestamptz` (события записаны в UTC). Нужно посчитать DAU по дням в таймзоне Москвы (и не зависеть от таймзоны сессии). Какой бакет правильный?
- Все вопросы по «Даты и время» →