Нужно построить график регистраций по часам из таблицы пользователей со столбцом created_at типа timestamp. Какой бакет лучше использовать?
A
DATE_TRUNC('day', created_at): округление до начала дня без сохранения часовой детализацииB
EXTRACT(HOUR FROM created_at): извлекает только номер часа без сохранения даты событияC
DATE_TRUNC('minute', created_at): округление до минуты с очень мелкой шириной бакетаD
DATE_TRUNC('hour', created_at): округление момента до часа с сохранением даты событияПравильный ответ. Часовой бакет правильно строится через
DATE_TRUNC('hour', ...), чтобы сохранились и дата, и час.Разбор
Если извлечь только номер часа через EXTRACT(HOUR FROM created_at), потеряется дата и регистрации в один и тот же час разных дней попадут в один бакет. Усечение DATE_TRUNC('hour', created_at) сохраняет дату и обнуляет минуты с секундами, давая корректные часовые точки на временной оси. Округление до дня скроет внутридневную динамику, а до минуты раздробит график до неинтерпретируемой плотности. Поэтому именно часовое усечение подходит лучше всего.
Проверь себя · 1/3разбор после ответа
В таблице
events(created_at) нужно выбрать события за последние 7 дней с точностью до текущего момента (включая сегодняшние, ещё не завершённые сутки). Какое условие в WHERE корректнее?Ещё вопросы по теме «Даты и время»
- В таблице `events(user_id, created_at)` поле `created_at` имеет тип отметки времени с долями секунд. Как корректно посчитать количество событий по дням?
- Есть таблица `orders(created_at, amount)`, где `created_at` имеет тип `timestamp`. Как посчитать выручку по месяцам?
- В таблице `events(created_at)` нужно выбрать события за последние 7 дней с точностью до текущего момента (включая сегодняшние, ещё не завершённые сутки). Какое условие в `WHERE` корректнее?
- Как получить начало текущей недели (недельный бакет) по текущей дате в PostgreSQL?
- Колонка `created_at` имеет тип `timestamp`. Какой тип данных вернёт `DATE_TRUNC('day', created_at)`?
- Все вопросы по «Даты и время» →