Mysql日期辅助函数

1 场景:需要实现柱状图的展现,x轴为日期,y轴为次数,如果当天没有,则次数为0

2 解决思路

  1. 通过java代码实现,拼接x轴日期
  2. 通过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,该函数的作用是生成区间内的具体日期
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值