创建一个数字辅助表
CREATE TABLE `nums` (
`key` int(11) NOT NULL,
PRIMARY KEY (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数字辅助表';
创建一个存储过程为数字辅助表增加数据
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `create_nums`(cnt int unsigned)
BEGIN
declare s int unsigned default 1;
truncate table nums;
insert into nums select s;
while s*2<=cnt do
begin
insert into nums select `key`+s from nums;
set s=s*2;
end;
end while;
END$$
DELIMITER ;
执行存储过程,增加1-50000进入数字辅助表
call create_nums(50000);
输入起止日期
SELECT
@num :=@num + 1 AS id,
date_format(
adddate(
'2015-10-2',
INTERVAL @num DAY
),
'%Y-%m-%d'
) AS date
FROM
nums,
(SELECT @num := - 1) t
WHERE
adddate(
'2015-10-2',
INTERVAL @num DAY
) < '2016-10-01'
ORDER BY
date;