1 场景:需要实现柱状图的展现,x轴为日期,y轴为次数,如果当天没有,则次数为0
2 解决思路
- 通过java代码实现,拼接x轴日期
- 通过mysql表连接实现,需要加入日期辅助表,提前生成一定的日期
2.1 创建日期辅助表
CREATE TABLE `auxiliary_date_table` (
`id` int(36) NOT NULL AUTO_INCREMENT COMMENT '主键',
`auxiliary_date` date DEFAULT NULL COMMENT '日期',
PRIMARY KEY (`id`),
UNIQUE KEY `index_date` (`auxiliary_date`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9866 DEFAULT CHARSET=utf8mb4 COMMENT='辅助_日期辅助表';
auxiliary_date设置为唯一索引,这样即便函数执行有重复也只会生成一个日期
2.2 创建日期生成函数(便于后续增加)
CREATE FUNCTION `create_calendar`(s_date varchar(36), e_date varchar(36)) RETURNS int(11)
BEGIN
WHILE DATE(s_date) <= DATE(e_date) DO
INSERT IGNORE INTO auxiliary_date_table(auxiliary_date) VALUES (DATE(s_date));
SET s_date = DATE_ADD(DATE(s_date),INTERVAL 1 DAY);
END WHILE;
return 1;
END
开始日期是s_date,结束日期是e_date,该函数的作用是生成区间内的具体日期