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