如果时间跨度过大,需要表Numbers插入更多的连续数字,以下实例插入0~6000,可查询时间跨度为6000天的数据。
-- 创建表并填充表中的连续数字,以便生成日期范围
DELIMITER //
CREATE PROCEDURE InsertNumbers()
BEGIN
DECLARE i INT DEFAULT 0;
-- 创建表(如果不存在)
CREATE TABLE IF NOT EXISTS numbers (n INT);
WHILE i <= 6000 DO
INSERT INTO numbers (n) VALUES (i);
SET i = i + 1;
END WHILE;
END;
//
DELIMITER ;
-- 调用存储过程来插入数字
CALL InsertNumbers();
-- 获取介于两个日期之间的日期列表
SELECT DATE_ADD('2021-06-01', INTERVAL n DAY) AS generatedDate
FROM numbers
WHERE DATE_ADD('2021-06-01', INTERVAL n DAY) <= '2033-11-30';
运行结果图片上传失败,索性就不上传了吧