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

DATE_PART

Дістає з дати чи часу окрему частину — те саме, що EXTRACT, але звичайною функцією.

Синтаксис

DATE_PART('<частина>', <дата або час>)

Повертає рік, місяць, день, годину тощо. Робить те саме, що EXTRACT, лише частину пишуть у лапках першим аргументом: DATE_PART('month', created_at). Відмінність у типі: DATE_PART повертає double precision, а EXTRACT — numeric.

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

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_PART('year', TIMESTAMP '2026-09-13 15:47') AS year,
DATE_PART('hour', TIMESTAMP '2026-09-13 15:47') AS hour;
yearhour
202615
Місяць кожного замовлення
SELECT id, created_at,
DATE_PART('month', created_at) AS month
FROM orders;
idcreated_atmonth
12026-07-03 10:15:007
22026-07-28 18:40:007
32026-08-09 09:05:008
42026-08-21 14:30:008
52026-09-02 11:00:009
Скільки секунд в інтервалі
SELECT DATE_PART('epoch', INTERVAL '2 hours') AS seconds;
seconds
7200

'epoch' для інтервалу — його довжина в секундах.

Зверни увагу

Частину пишуть у лапках: DATE_PART(month, created_at) без лапок — помилка column "month" does not exist, бо PostgreSQL шукає стовпець.

Повертає число, а не назву: DATE_PART('month', …) дає 9, а не September. Назву дає TO_CHAR(created_at, 'FMMonth').

Як і EXTRACT, для групування по місяцях не годиться: вересень різних років злиється. Бери DATE_TRUNC.

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