Criar lista com o primeiro e o último dia do mês para um determinado período

Eu tenho que gerar uma lista com duas colunas de intervalos de dias para cada mês em um período específico. A primeira coluna deve ser o primeiro dia do mês e a segunda coluna, o último dia do mês.

Exemplo:
Data de início:2014-01-01
Data final:2014-06-30

O resultado deve estar em duas colunas:

1. 2014-01-01 | 2014-01-31
2. 2014-02-01 | 2014-02-28
3. 2014-03-01 | 2014-03-31
4. 2014-04-01 | 2014-04-30
5. 2014-05-01 | 2014-05-31
6. 2014-06-01 | 2014-06-30

Eu tenho duas funções que obtêm o primeiro e o último dia de uma data. Estou tentando combinar duas séries, mas sem sorte.

select i::date
from generate_series(first_day('2014-01-01')
                    ,first_day('2014-06-30'), '1 month'::interval) i

select i::date
from generate_series(last_day('2014-01-01')
                    ,last_day('2014-06-30'), '1 month'::interval) i

A segunda função não mostra o último dia corretamente quando está na série.

questionAnswers(2)

yourAnswerToTheQuestion