В таблице users(signup_at) поле signup_at типа date. Нужно получить дату «через один календарный месяц» после регистрации. Какое выражение корректнее?
A
signup_at + INTERVAL '30 days'B
signup_at + INTERVAL '4 weeks'C
signup_at + INTERVAL '1 month'D
DATE_TRUNC('month', signup_at) + INTERVAL '1 month'Правильный ответ. Календарные месяцы корректнее считать через
INTERVAL '1 month', а не фиксированное число дней.Разбор
INTERVAL '30 days' и INTERVAL '4 weeks' — фиксированное количество дней, которое не совпадает с календарным месяцем. Если бизнес-правило звучит как «через месяц», используйте + INTERVAL '1 month'. В Postgres выражение date + interval возвращает timestamp (обычно с временем 00:00:00); при необходимости приведите результат к ::date. Вариант с DATE_TRUNC('month', signup_at) сдвигает дату к началу месяца и меняет смысл расчёта.
Проверь себя · 1/3разбор после ответа
Какое описание лучше всего соответствует типу
timestamptz в PostgreSQL?Ещё вопросы по теме «Даты и время»
- В таблице `events(user_id, created_at)` поле `created_at` типа `timestamp`. Как посчитать количество событий по дням?
- Есть таблица `orders(created_at, amount)`, где `created_at` типа `timestamp`. Как посчитать выручку по месяцам?
- В таблице `events(created_at)` нужно выбрать события за последние 7 дней относительно текущего момента (`current_timestamp`). Какое условие в `WHERE` корректнее?
- Как получить начало текущей недели (недельный бакет) по текущей дате в PostgreSQL?
- Колонка `created_at` имеет тип `timestamp`. Какой тип данных вернёт `DATE_TRUNC('day', created_at)`?
- Все вопросы по «Даты и время» →