MYSQL8-CTE(公共表表达式)优雅实现递归查询
示例:构造2022年1月1日到2024年7月2日 之间的所有报告期
with recursive cte as
(
select 0 as num
union all
select num + 3 as num from cte where num < timestampdiff(month,'20220101','20240702')
)
select
date_add('20220101', interval num month) as quarter_start,
date_sub(date_add('20220101', interval num+3 month),interval 1 day) quarter_end
from cte;