MySQL 生成日期表


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM