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')

  结果:

  

 

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM