• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
守心
我们所荒废的今日,是昨日将死之人触不可得的明天。
I leave uncultivated today, was precisely yesterday perishestomorrow which person of the body implored.
博客园    首页    新随笔    联系   管理    订阅  订阅

MYSQL 生成日期表,可用于报表统计

一.创建日期表

  我这里统计用到了日统计、月统计,所以表结构设计了日、月两个字段:

   

   建表语句:

CREATE TABLE `obj_date` (
  `re_date` varchar(10) NOT NULL COMMENT '日期,如‘2014-05-07’',
  `re_month` varchar(7) NOT NULL COMMENT '日期,如‘2014-05’'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='日期表,用于统计报表';

 

二.创建SQL函数

  先创建存储过程函数:

CREATE PROCEDURE `getDate`(in startDay date,in endDay date)
BEGIN
    DECLARE count2 INT DEFAULT 0;        
    WHILE  DATEDIFF(startDay,endDay)<=0 DO
        INSERT INTO obj_date(re_date,re_month) VALUES (DATE_FORMAT(startDay,'%Y-%m-%d'),DATE_FORMAT(startDay ,'%Y-%m'));
        SET count2=count2+1;
        SET startDay=DATE_ADD(startDay,INTERVAL 1 DAY);
    END WHILE;
END

  解释:startDay表示开始时间,格式为  “yyyy-MM-dd ”,endDay 表示截止时间,格式为 “yyyy-MM-dd”,此函数插入日期段内所有天和月,含头含尾

三.调用函数

  调用函数示例:

call getDate('2020-01-01', '2023-12-31')

  结果:

  

 

   至此,日期中间表生成完毕,需要不同格式的日期请自行结合函数修改存储过程和表结构即可~

posted @ 2020-02-19 01:21  守心  阅读(1817)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3