实现思路
1.创建表(临时表)作为日历表
2.通过date_add()函数,来生成偏移日期
3.使用while do实现循环插入日期值到日历表
如下列子所示:
-- 通过存储过程来实现
drop procedure if exists generate_date_series;
create procedure generate_date_series(in start_date varchar(10),in end_date varchar(10))
begin
# 1.创建一个表,如果表不存在的话(也可以使用临时表)
create table if not exists tb_calendar(data_date date);
# 清空日历表中的数据
truncate table tb_calendar;
set @start_date:= date(start_date);
set @end_date:=date(end_date);
# 3.根据传入的日期生成日期,进行循环插入
while @start_date <= @end_date do
insert into tb_calendar values (@start_date);
# 2.通过date_add()函数,来生成偏移日期
set @start_date := date_add(@start_date,interval 1 day);
end while;
end;
## 使用存储结构
call generate_date_series('2022-10-04',DATE_FORMAT(now(),'%Y-%m-%d'));
## 查看日历表
select * from tb_calendar;