В таблице users(signup_at) поле signup_at типа date. Нужно получить дату «через один календарный месяц» после регистрации. Какое выражение корректнее?

Asignup_at + INTERVAL '30 days'
Bsignup_at + INTERVAL '4 weeks'
Csignup_at + INTERVAL '1 month'
DDATE_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?
Тренировать SQL в Telegram

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