您的位置:首页 > 数据库 > MySQL

MySQL 生成 时间轴

2014-03-17 01:12 218 查看
DROP PROCEDURE IF EXISTS pro_dim_date;
tudou@Gyyx
CREATE PROCEDURE pro_dim_date(IN bdate DATE,IN edate DATE)
BEGIN
DECLARE var DATE DEFAULT bdate;
DECLARE evar DATE DEFAULT DATE_ADD(edate,INTERVAL 1 DAY);
DECLARE bweek DATE;
DECLARE eweek DATE;
WHILE var<evar DO
SET bweek = DATE_ADD(DATE_SUB(var,INTERVAL 1 WEEK),INTERVAL 1 DAY);
SET eweek = DATE_SUB(DATE_ADD(var,INTERVAL 1 WEEK),INTERVAL 1 DAY);
INSERT INTO gyyx_report.dim_date
(
`date_id`,
`date_name`,
`date_of_month`,
`year_id`,
`year_name`,
`quarter_id`,
`quarter_name`,
`month_id`,
`month_name`,
`month_of_year_name`,
`month_of_year_id`,
`week_id`,
`week_name`,
`week_of_year_id`,
`week_of_year_name`,
`is_weekend`
)
VALUES
(
DATE_FORMAT(var,'%Y%m%d'),
DATE_FORMAT(var,'%Y-%m-%d'),
DAYOFMONTH(var),
YEAR(var),
CONCAT(YEAR(var),'年'),
QUARTER(var),
CONCAT(QUARTER(var),'季度'),
DATE_FORMAT(var,'%Y%m'),
CONCAT(YEAR(var),'年',MONTH(var),'月'),
CONCAT(MONTH(var),'月'),
MONTH(var),
WEEKDAY(var),
CASE WEEKDAY(var) WHEN 0 THEN '星期一' WHEN 1 THEN '星期二' WHEN 2 THEN '星期三' WHEN 3 THEN '星期四' WHEN 4 THEN '星期五' WHEN 5 THEN '星期六' WHEN 6 THEN '星期日' END,
WEEKOFYEAR(var),
CONCAT('第',WEEKOFYEAR(var),'周(',MONTH(bweek),'月',DAY(bweek),'日~',MONTH(eweek),'月',DAY(eweek),'日'),
CASE WHEN WEEKDAY(var)>4 THEN '是' ELSE '否' END
);
SET var=DATE_ADD(var,INTERVAL 1 DAY);
END WHILE;
END
调用:

CALL pro_dim_date('2005-01-01','2013-12-31')
结果:

20131217    2013-12-17  17  2013    2013年   4   4季度 201312  2013年12月    12月 12  1   星期二 51  第51周(12月11日~12月23日  否
20131218    2013-12-18  18  2013    2013年   4   4季度 201312  2013年12月    12月 12  2   星期三 51  第51周(12月12日~12月24日  否
20131219    2013-12-19  19  2013    2013年   4   4季度 201312  2013年12月    12月 12  3   星期四 51  第51周(12月13日~12月25日  否
20131220    2013-12-20  20  2013    2013年   4   4季度 201312  2013年12月    12月 12  4   星期五 51  第51周(12月14日~12月26日  否
20131221    2013-12-21  21  2013    2013年   4   4季度 201312  2013年12月    12月 12  5   星期六 51  第51周(12月15日~12月27日  是
20131222    2013-12-22  22  2013    2013年   4   4季度 201312  2013年12月    12月 12  6   星期日 51  第51周(12月16日~12月28日  是
20131223    2013-12-23  23  2013    2013年   4   4季度 201312  2013年12月    12月 12  0   星期一 52  第52周(12月17日~12月29日  否
20131224    2013-12-24  24  2013    2013年   4   4季度 201312  2013年12月    12月 12  1   星期二 52  第52周(12月18日~12月30日  否
20131225    2013-12-25  25  2013    2013年   4   4季度 201312  2013年12月    12月 12  2   星期三 52  第52周(12月19日~12月31日  否
20131226    2013-12-26  26  2013    2013年   4   4季度 201312  2013年12月    12月 12  3   星期四 52  第52周(12月20日~1月1日    否
20131227    2013-12-27  27  2013    2013年   4   4季度 201312  2013年12月    12月 12  4   星期五 52  第52周(12月21日~1月2日    否
20131228    2013-12-28  28  2013    2013年   4   4季度 201312  2013年12月    12月 12  5   星期六 52  第52周(12月22日~1月3日    是
20131229    2013-12-29  29  2013    2013年   4   4季度 201312  2013年12月    12月 12  6   星期日 52  第52周(12月23日~1月4日    是
表结构:

CREATE TABLE `dim_date` (
  `date_id` int(11) NOT NULL COMMENT '20110512',
  `date_name` varchar(16) DEFAULT NULL COMMENT '2011-05-12',
  `date_of_month` int(11) DEFAULT NULL COMMENT '12',
  `year_id` int(11) DEFAULT NULL COMMENT '2011',
  `year_name` varchar(16) DEFAULT NULL COMMENT '2011年',
  `quarter_id` int(11) DEFAULT NULL COMMENT '2',
  `quarter_name` varchar(16) DEFAULT NULL COMMENT '2季度',
  `month_id` int(11) DEFAULT NULL COMMENT '5',
  `month_name` varchar(16) DEFAULT NULL COMMENT '5月',
  `month_of_year_name` varchar(16) DEFAULT NULL COMMENT '2011年5月',
  `month_of_year_id` int(11) DEFAULT NULL COMMENT '201105',
  `week_id` int(11) DEFAULT NULL,
  `week_name` varchar(16) DEFAULT NULL,
  `week_of_year_id` int(11) DEFAULT NULL,
  `week_of_year_name` varchar(32) DEFAULT NULL,
  `is_weekend` enum('否','是') DEFAULT NULL COMMENT '是否周末',
  PRIMARY KEY (`date_id`),
  KEY `ix_dim_date_date_name` (`date_name`),
  KEY `ix_dim_date_month_id` (`month_id`),
  KEY `ix_dim_date_year_id` (`year_id`),
  KEY `ix_dim_date_quanter_id` (`quarter_id`),
  KEY `ix_dim_date_week_of_year_id` (`week_of_year_id`,`week_of_year_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql