轉自:http://blog.csdn.net/guge907/article/details/27170953
今天遇到一個需求是要統計投訴商品數量折線圖的 需要以日期為維度來統計 如果數據沒了就顯示0 但是要把日期顯示出來
由於沒有找到mysql生產兩個日期間所有日期的函數 故建立此表
CREATE TABLE date_table (
rep_date date NOT NULL, //日期,如‘2014-05-07’
rep_year int(8) DEFAULT NULL, //年,如2014
rep_month int(8) DEFAULT NULL, //月,如5
rep_day int(8) DEFAULT NULL, //日,如7
rep_week int(8) DEFAULT NULL, //周,一年約52周,‘2014-05-07’是第19周
PRIMARY KEY (rep_date)
)
CREATE PROCEDURE getAllDate()
BEGIN
DECLARE count INT DEFAULT 0;
DECLARE startDay DATE DEFAULT DATE(NOW());
DECLARE endDay DATE DEFAULT DATE(NOW());
WHILE count<365 DO
INSERT INTO date_table(rep_date,rep_year,rep_month,rep_day,rep_week) VALUES (startDay,YEAR(startDay),MONTH(startDay),DAY(startDay),WEEKOFYEAR(startDay));
SET count=count+1;
SET startDay=DATE_ADD(DATE(NOW()),INTERVAL count DAY);
SET endDay=DATE_SUB(DATE(NOW()),INTERVAL count DAY);
INSERT INTO date_table(rep_date,rep_year,rep_month,rep_day,rep_week) VALUES (endDay,YEAR(endDay),MONTH(endDay),DAY(endDay),WEEKOFYEAR(endDay));
END WHILE;
END
CALL getAllDate();