月末を取得して1~31 generate_seriesで

月末を取得して1~31までを作る。

SELECT 
    generate_series(1, EXTRACT(DAY FROM enddate)::INTEGER) AS date
    FROM
    (
        SELECT   
        DATE_TRUNC('month', TO_TIMESTAMP(TO_DATE(20130301::TEXT, 'YYYYMMDD')::TEXT, 'yyyy/mm/dd hh:mm:ss') + '1 months') + '-1 days' AS enddate
    )tmp