DATE_TRUNC
Округляет дату со временем или интервал вниз до указанной единицы.
PostgreSQL 17.5
DATE_TRUNC(field, source[, time_zone])Параметры
- fieldtext
- Единица округления
- Значения:'microseconds''milliseconds''second''minute''hour''day''week''month''quarter''year''decade''century''millennium'
- sourcetimestamp | interval
- Дата со временем или интервал
- time_zonetextнеобязательный
- Часовой пояс для значения timestamptz, по умолчанию из настройки TimeZone
Возвращаемое значение
Значение того же типа, что source, с обнулёнными младшими частями: для month — первое число месяца в 00:00; для date — timestamptz
Примеры
Начало месяца для даты
PostgreSQL 17.5
SELECT DATE_TRUNC('month', TIMESTAMP '2023-02-15 10:20:30');Понедельник той же недели
PostgreSQL 17.5
SELECT DATE_TRUNC('week', TIMESTAMP '2024-03-08 14:30:00');Сумма платежей по месяцам
PostgreSQL 17.5
SELECT DATE_TRUNC('month', date) AS MONTH,
SUM(amount * unit_price) AS total
FROM Payments
GROUP BY DATE_TRUNC('month', date)
ORDER BY MONTH;Подробности
Неделя ('week') начинается с понедельника. Для значения date результат имеет тип timestamptz: чтобы снова получить дату, добавьте ::date. Функция удобна для группировки по периодам: GROUP BY DATE_TRUNC('month', date).