Использовать generate_series для заполнения списка месяцев за определенный год в PostgreSQL

У меня есть следующий запрос, который генерирует список месяцев для данного года, когда 2014-01-01 дата (2014-01-01):

SELECT to_char(dd, 'Month') 
FROM generate_series(CAST('2014-01-01' AS DATE), date_trunc('month', now()), '1 month') as dd;

 to_char 
-----------
 January 
 February 
(2 rows)

Теперь, вместо 2014-01-01 мне нужно пройти только 2014 и получить тот же результат.

2 ответа

SELECT distinct to_char(dd, 'Month') FROM generate_series(to_date('2013', 'YYYY') , date_trunc('month', now()), '1 month') as dd;


Вы можете добавить -01-01 в год:

SELECT 
 to_char(dd, 'Month') 
FROM 
 generate_series(
 ('2013' || '-01-01')::date, 
 ('2013' || '-01-01')::date + interval '1 year' - interval '1 day', 
 '1 month') as dd;

licensed under cc by-sa 3.0 with attribution.