一.創建日期表
我這里統計用到了日統計、月統計,所以表結構設計了日、月兩個字段:
建表語句:
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')
結果:
至此,日期中間表生成完畢,需要不同格式的日期請自行結合函數修改存儲過程和表結構即可~