Sugiero date_trunc()
en cambio. Trunca date
/ timestamp
a la unidad dada.
Por dos razones:
-
Desea el número de pedidos en agosto de un año en particular, como 2012, no la suma de agosto de todos los años en la tabla.
date_trunc('month', orderdate)
hace exactamente eso y evita que mezcle varios años por accidente. Obtiene varias filas para varios años. -
Ambos pueden
ORDER BY
yGROUP BY
esta expresión, la consulta es un poco más rápida.
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);
db<>fiddle aquí
Antiguo sqlfiddle
Para nombres de meses completos, como implica su primer ejemplo:
to_char(date_col, 'Month')
Para nombres localizados que no están en inglés:
to_char(date_col, 'TMMonth')