Предлагам date_trunc()
вместо. Той съкращава date
/ timestamp
към дадената единица.
Поради две причини:
-
Искате броя на поръчките през август на определена година, като 2012 г., не сумата за август на всички години в таблицата.
date_trunc('month', orderdate)
прави точно това и предотвратява случайно смесване на няколко години. Получавате множество редове за няколко години. -
И двамата можете да
ORDER BY
иGROUP BY
този един израз, заявката е малко по-бърза.
SELECT to_char(date_trunc('month', orderdate), 'Mon') AS "Month" -- repeat expr.
,count(*) AS "Quantity"
FROM orders
GROUP BY date_trunc('month', orderdate) -- 1 item covers it
ORDER BY date_trunc('month', orderdate);
За пълни имена на месеци, както предполага вашият първи пример:
to_char(date_col, 'Month')
За неанглийски, локализирани имена:
to_char(date_col, 'TMMonth')