Дати й часлише PostgreSQL

DATE_TRUNC

Обрізає дату й час до початку року, місяця, тижня, дня чи години.

Синтаксис

DATE_TRUNC('<одиниця>', <момент>)

Відкидає все, що дрібніше за вказану одиницю: 'month' перетворює будь-який момент місяця на його перше число о 00:00. Одиниці: 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute'. Найчастіше — щоб групувати дані по місяцях чи днях.

Дані для прикладів

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Одна мить — різні одиниці
SELECT DATE_TRUNC('month', TIMESTAMP '2026-09-13 15:47') AS month_start,
DATE_TRUNC('day', TIMESTAMP '2026-09-13 15:47') AS day_start,
DATE_TRUNC('hour', TIMESTAMP '2026-09-13 15:47') AS hour_start;
month_startday_starthour_start
2026-09-01 00:00:002026-09-13 00:00:002026-09-13 15:00:00
Кожне замовлення — до початку місяця
SELECT id, created_at,
DATE_TRUNC('month', created_at) AS month
FROM orders;
idcreated_atmonth
12026-07-03 10:15:002026-07-01 00:00:00
22026-07-28 18:40:002026-07-01 00:00:00
32026-08-09 09:05:002026-08-01 00:00:00
42026-08-21 14:30:002026-08-01 00:00:00
52026-09-02 11:00:002026-09-01 00:00:00
Замовлення по місяцях
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS order_count,
SUM(amount) AS revenue
FROM orders
GROUP BY month
ORDER BY month;
monthorder_countrevenue
2026-07-01 00:00:002200.75
2026-08-01 00:00:002244.99
2026-09-01 00:00:00164.75

Зверни увагу

Тиждень починається з понеділка: DATE_TRUNC('week', …) для неділі 13 вересня поверне понеділок 7 вересня.

Якщо передати тип date, результатом буде timestamp with time zone, і його вигляд залежить від часового поясу. Потрібна саме дата — додай ::date: DATE_TRUNC('month', DATE '2026-09-13')::date.

Для групування по місяцях бери DATE_TRUNC, а не EXTRACT(MONTH FROM …): інакше вересень різних років злиється в один рядок.

Схожі функції