SELECT
DATE_FORMAT(DATE_ADD(DATE_ADD(LAST_DAY(CONCAT(${if(len(time) == 0,year(now()), year(time) )}, '-', ${if(len(time)== 0,format(month(now()),"00"), format(month(time),"00") )}, '-01')), INTERVAL 1 DAY), INTERVAL -(a.a + (10 * b.a) + (100 * c.a)) DAY), '%Y-%m-%d') AS date
FROM
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a,
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b,
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
WHERE
DATE_ADD(DATE_ADD(LAST_DAY(CONCAT(${if(len(time) == 0,year(now()), year(time) )}, '-', ${if(len(time)== 0,format(month(now()),"00"), format(month(time),"00") )}, '-01')), INTERVAL 1 DAY), INTERVAL -(a.a + (10 * b.a) + (100 * c.a)) DAY) >= CONCAT(${if(len(time) == 0,year(now()), year(time) )}, '-', LPAD(${if(len(time)== 0,format(month(now()),"00"), format(month(time),"00") )}, 2, '0'), '-01')
AND DATE_ADD(DATE_ADD(LAST_DAY(CONCAT(${if(len(time) == 0,year(now()), year(time) )}, '-', ${if(len(time)== 0,format(month(now()),"00"), format(month(time),"00") )}, '-01')), INTERVAL 1 DAY), INTERVAL -(a.a + (10 * b.a) + (100 * c.a)) DAY) <= LAST_DAY(CONCAT(${if(len(time) == 0,year(now()), year(time) )}, '-', ${if(len(time)== 0,format(month(now()),"00"), format(month(time),"00") )}, '-01'))
ORDER BY
date ASC;