mysql 给定起止日期获取之间的连续日期

创建一个数字辅助表

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;

猜你喜欢

转载自blog.csdn.net/boenwan/article/details/76268739