WITH
--startign month
m as (
    SELECT
        *
    FROM
        (
            VALUES
            (1,1,1)
            ,(2,2,1)
            ,(3,3,1)
            ,(4,4,2)
            ,(5,5,2)
            ,(6,6,2)
            ,(7,7,3)
            ,(8,8,3)
            ,(9,9,3)
            ,(10,10,4)
            ,(11,11,4)
            ,(12,12,4)
        ) X (cm,fm,fq)
)
INSERT INTO
    evt.fspr
SELECT 
    --TO_CHAR(gs.d,'YYYY.MM.DD')::ltree t1
    (
        --year
        to_char(extract(year from gs.d),'FM0000')
        --quarter
        ||'.'||to_char(m.fq,'FM00')
        --month
        ||'.'||to_char(m.fm,'FM00')
        --day
        ||'.'||to_char(extract(day from gs.d),'FM00')
    )::ltree t2
    ,tstzrange(gs.d,gs.d + '1 month'::interval) r
FROM 
    generate_series('2018-01-01 00:00'::timestamptz,'2099-12-01 00:00'::timestamptz,'1 day') gs(d)
    INNER JOIN m ON
        m.cm = extract(month from gs.d)