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 day(date date); -- 生成一个存储日期的表,datalist是字段名
-- 这里是生成并插入日期数据
INSERT INTO day(date) SELECT
adddate(
( -- 这里的起始日期,你可以换成当前日期
DATE_FORMAT("2016-1-1", '%Y-%m-%d')
),
num.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 num;
DROP table num; -- 删除临时表
SELECT DATE_FORMAT("2016-10-20","%Y"); -- 最大2030年
CREATE TABLE if not exists base_month(date VARCHAR(10));-- 生成一个存储年月的表,datalist是字段名
DELIMITER $$
CREATE PROCEDURE make_yearMonth()
BEGIN
set @y = 2016;
set @m = 1;
WHILE @y<=2030 DO
WHILE @m<=12 DO
IF (@m<10) THEN
INSERT INTO base_month(date) VALUES(CONCAT(@y,"-0",@m));
ELSE
INSERT INTO base_month(date) VALUES(CONCAT(@y,"-",@m));
END IF;
set @m = @m+1;
END WHILE;
set @m = 1;
set @y = @y+1;
END WHILE;
END;
$$
call make_yearMonth(); -- 执行存储过程生产数据
drop PROCEDURE make_yearMonth; -- 删除存储过程
mysql生成日历脚本(年|年月 格式)
最新推荐文章于 2023-07-20 13:18:41 发布