mysql中生成时间维度表
利用mysql常用日期函数生成时间维度表,效率最高,最简单,无需其他的一些工具支持。生成结果示例如下图:
# time span SET @d0 = "2012-01-01"; SET @d1 = "2012-12-31"; SET @date = date_sub(@d0, interval 1 day); # set up the time dimension table DROP TABLE IF EXISTS time_dimension; CREATE TABLE `time_dimension` ( `date` date DEFAULT NULL, `id` int NOT NULL, `y` smallint DEFAULT NULL, `m` smallint DEFAULT NULL, `d` smallint DEFAULT NULL, `yw` smallint DEFAULT NULL, `w` smallint DEFAULT NULL, `q` smallint DEFAULT NULL, `wd` smallint DEFAULT NULL, `m_name` char(10) DEFAULT NULL, `wd_name` char(10) DEFAULT NULL, PRIMARY KEY (`id`) ); # populate the table with dates INSERT INTO time_dimension SELECT @date := date_add(@date, interval 1 day) as date, # integer ID that allowsimmediate understanding date_format(@date, "%Y%m%d")as id, year(@date) as y, month(@date) as m, day(@date) as d, date_format(@date, "%x")as yw, week(@date, 3) as w, quarter(@date) as q, weekday(@date)+1 as wd, monthname(@date) as m_name, dayname(@date) as wd_name FROM T WHERE date_add(@date, interval 1 day) <= @d1 ORDER BY date ;
神秘的表T,仅仅需要有多于你需要生成日期的记录数即可。思路是从T表选择多行数据,同时生产对应的日期字段。
原文地址:http://blog.csdn.net/neweastsun/article/details/43866599