WITH RECURSIVE t(n) AS (
SELECT
DATE_SUB(CURRENT_DATE(),INTERVAL 30 day)
UNION ALL
SELECT DATE_ADD(n,INTERVAL 1 DAY) FROM t WHERE n < DATE_ADD(CURRENT_DATE(),INTERVAL -1 day)
)
select * from t
_________________________
SELECT * from customers c where DATE_FORMAT(c.birthdate,'%Y-%m-%d')>=DATE_SUB(curdate(),interval 30 day)
https://www.cnblogs.com/yyhhblog/p/15581363.html 参考