做系统设计以及涉及数据分析的时候,会涉及到各种期间维度的统计计算。
可以按日期生成期间维度表,如下:
1.按期间生成日期表
DROP TABLE IF EXISTS `v_day`;
CREATE TABLE `v_day` (
`oc_date` varchar(20) DEFAULT NULL
);
2.调用方法为输入开始结束日期,生成期间的日期
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_gen_dates`$$
CREATE PROCEDURE `sp_gen_dates` (
param_begin_date VARCHAR (20),
param_end_date VARCHAR (20)
)
BEGIN
DECLARE cur_date,
end_date VARCHAR (20) ;
SET cur_date = DATE_FORMAT(param_begin_date, '%Y-%m-%d') ;
SET end_date = DATE_FORMAT(param_end_date, '%Y-%m-%d') ;
WHILE
cur_date < end_date DO
INSERT INTO v_day (oc_date)
VALUES
(cur_date) ;
SET cur_date = DATE_ADD(cur_date, INTERVAL 1 DAY) ;
END WHILE ;
END $$
DELIMITER ;
2.生成日期维度表