1、創建一個num表,用來存儲數字0~9
CREATE TABLE num (i int);
2、在num表中生成0~9
INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
3、生成一個存儲日期的表,datalist是字段名
CREATE TABLE if not exists calendar(datelist date);
4、生成並插入日期數據
INSERT INTO calendar(datelist) SELECT adddate( ( -- 這里的起始日期,你可以換成當前日期 DATE_FORMAT("2016-1-1", '%Y-%m-%d') ), numlist.id ) AS `date` FROM ( SELECT n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id FROM num n1 CROSS JOIN num AS n10 CROSS JOIN num AS n100 CROSS JOIN num AS n1000 CROSS JOIN num AS n10000 ) AS numlist;
5、最后再添加主鍵即可
ALTER TABLE `calendar` ADD COLUMN `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵' FIRST , ADD PRIMARY KEY (`id`);
作者:Time大王
鏈接:https://www.jianshu.com/p/f270f9d15f82
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
執行sql生成從1900-01-01起的十萬條數據
CREATE TABLE num (i int);-- 創建一個表用來儲存0-9的數字
INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的數字,方便以后計算時間
CREATE TABLE if not exists calendar(datelist date); -- 生成一個存儲日期的表,datalist是字段名
-- 這里是生成並插入日期數據
INSERT INTO calendar(datelist) SELECT
adddate(
( -- 這里的起始日期,你可以換成當前日期
DATE_FORMAT("1900-1-1", '%Y-%m-%d')
),
numlist.id
) AS `date`
FROM
(
SELECT
n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id
FROM
num n1
CROSS JOIN num AS n10
CROSS JOIN num AS n100
CROSS JOIN num AS n1000
CROSS JOIN num AS n10000
) AS numlist;
生成calendar表后,刪除num的臨時表。
————————————————
版權聲明:本文為CSDN博主「Jonah_lxw」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xiuwu0423/article/details/86672560