Welcome 微信登录

首页 / 数据库 / MySQL / MySQL 生成 时间轴

MySQL 生成 时间轴:
 
  1. DROP PROCEDURE IF EXISTS pro_dim_date;  
  2. tudou@Gyyx  
  3. CREATE PROCEDURE pro_dim_date(IN bdate DATE,IN edate DATE)  
  4. BEGIN  
  5. DECLARE var DATE DEFAULT bdate;  
  6. DECLARE evar DATE DEFAULT DATE_ADD(edate,INTERVAL 1 DAY);  
  7. DECLARE bweek DATE;  
  8. DECLARE eweek DATE;  
  9. WHILE var<evar DO  
  10. SET bweek = DATE_ADD(DATE_SUB(var,INTERVAL 1 WEEK),INTERVAL 1 DAY);  
  11. SET eweek = DATE_SUB(DATE_ADD(var,INTERVAL 1 WEEK),INTERVAL 1 DAY);  
  12. INSERT INTO gyyx_report.dim_date   
  13. (  
  14. `date_id`,  
  15. `date_name`,  
  16. `date_of_month`,  
  17. `year_id`,  
  18. `year_name`,  
  19. `quarter_id`,  
  20. `quarter_name`,  
  21. `month_id`,  
  22. `month_name`,  
  23. `month_of_year_name`,  
  24. `month_of_year_id`,  
  25. `week_id`,  
  26. `week_name`,  
  27. `week_of_year_id`,  
  28. `week_of_year_name`,  
  29. `is_weekend`  
  30. )  
  31. VALUES  
  32. (  
  33. DATE_FORMAT(var,"%Y%m%d"),  
  34. DATE_FORMAT(var,"%Y-%m-%d"),  
  35. DAYOFMONTH(var),  
  36. YEAR(var),  
  37. CONCAT(YEAR(var),"年"),  
  38. QUARTER(var),  
  39. CONCAT(QUARTER(var),"季度"),  
  40. DATE_FORMAT(var,"%Y%m"),  
  41. CONCAT(YEAR(var),"年",MONTH(var),"月"),  
  42. CONCAT(MONTH(var),"月"),  
  43. MONTH(var),  
  44. WEEKDAY(var),  
  45. 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,  
  46. WEEKOFYEAR(var),  
  47. CONCAT("第",WEEKOFYEAR(var),"周(",MONTH(bweek),"月",DAY(bweek),"日~",MONTH(eweek),"月",DAY(eweek),"日"),  
  48. CASE WHEN WEEKDAY(var)>4 THEN "是" ELSE "否" END   
  49. );  
  50. SET var=DATE_ADD(var,INTERVAL 1 DAY);  
  51. END WHILE;  
  52. END  
调用:
 CALL pro_dim_date("2005-01-01","2013-12-31")  
结果
 
  1. 20131217    2013-12-17  17  2013    2013年   4   4季度 201312  2013年12月    12月 12  1   星期二 51  第51周(12月11日~12月23日  否  
  2. 20131218    2013-12-18  18  2013    2013年   4   4季度 201312  2013年12月    12月 12  2   星期三 51  第51周(12月12日~12月24日  否  
  3. 20131219    2013-12-19  19  2013    2013年   4   4季度 201312  2013年12月    12月 12  3   星期四 51  第51周(12月13日~12月25日  否  
  4. 20131220    2013-12-20  20  2013    2013年   4   4季度 201312  2013年12月    12月 12  4   星期五 51  第51周(12月14日~12月26日  否  
  5. 20131221    2013-12-21  21  2013    2013年   4   4季度 201312  2013年12月    12月 12  5   星期六 51  第51周(12月15日~12月27日  是  
  6. 20131222    2013-12-22  22  2013    2013年   4   4季度 201312  2013年12月    12月 12  6   星期日 51  第51周(12月16日~12月28日  是  
  7. 20131223    2013-12-23  23  2013    2013年   4   4季度 201312  2013年12月    12月 12  0   星期一 52  第52周(12月17日~12月29日  否  
  8. 20131224    2013-12-24  24  2013    2013年   4   4季度 201312  2013年12月    12月 12  1   星期二 52  第52周(12月18日~12月30日  否  
  9. 20131225    2013-12-25  25  2013    2013年   4   4季度 201312  2013年12月    12月 12  2   星期三 52  第52周(12月19日~12月31日  否  
  10. 20131226    2013-12-26  26  2013    2013年   4   4季度 201312  2013年12月    12月 12  3   星期四 52  第52周(12月20日~1月1日    否  
  11. 20131227    2013-12-27  27  2013    2013年   4   4季度 201312  2013年12月    12月 12  4   星期五 52  第52周(12月21日~1月2日    否  
  12. 20131228    2013-12-28  28  2013    2013年   4   4季度 201312  2013年12月    12月 12  5   星期六 52  第52周(12月22日~1月3日    是  
  13. 20131229    2013-12-29  29  2013    2013年   4   4季度 201312  2013年12月    12月 12  6   星期日 52  第52周(12月23日~1月4日    是 
表结构:
 
  1. CREATE TABLE `dim_date` (  
  2.   `date_id` int(11) NOT NULL COMMENT "20110512",  
  3.   `date_name` varchar(16) DEFAULT NULL COMMENT "2011-05-12",  
  4.   `date_of_month` int(11) DEFAULT NULL COMMENT "12",  
  5.   `year_id` int(11) DEFAULT NULL COMMENT "2011",  
  6.   `year_name` varchar(16) DEFAULT NULL COMMENT "2011年",  
  7.   `quarter_id` int(11) DEFAULT NULL COMMENT "2",  
  8.   `quarter_name` varchar(16) DEFAULT NULL COMMENT "2季度",  
  9.   `month_id` int(11) DEFAULT NULL COMMENT "5",  
  10.   `month_name` varchar(16) DEFAULT NULL COMMENT "5月",  
  11.   `month_of_year_name` varchar(16) DEFAULT NULL COMMENT "2011年5月",  
  12.   `month_of_year_id` int(11) DEFAULT NULL COMMENT "201105",  
  13.   `week_id` int(11) DEFAULT NULL,  
  14.   `week_name` varchar(16) DEFAULT NULL,  
  15.   `week_of_year_id` int(11) DEFAULT NULL,  
  16.   `week_of_year_name` varchar(32) DEFAULT NULL,  
  17.   `is_weekend` enum("否","是") DEFAULT NULL COMMENT "是否周末",  
  18.   PRIMARY KEY (`date_id`),  
  19.   KEY `ix_dim_date_date_name` (`date_name`),  
  20.   KEY `ix_dim_date_month_id` (`month_id`),  
  21.   KEY `ix_dim_date_year_id` (`year_id`),  
  22.   KEY `ix_dim_date_quanter_id` (`quarter_id`),  
  23.   KEY `ix_dim_date_week_of_year_id` (`week_of_year_id`,`week_of_year_name`)  
  24. ) ENGINE=MyISAM DEFAULT CHARSET=latin1  
MySQL 使用locate函数对 GROUP_CONCAT 列进行 JOIN 操作如何移动DB2的数据库建库目录相关资讯      MySQL数据库教程 
  • MySQL 处理非法数据  (04/09/2013 08:06:28)
  • MySQL关于timestamp和mysqldump的  (12/16/2012 13:25:41)
  • MySQL保证数据完整性  (12/16/2012 12:00:35)
  • ERROR 1130: mysql 1130连接错误的  (12/16/2012 13:29:08)
  • MySQL数据库教程:管理数据库和表(  (12/16/2012 12:47:02)
  • MySQL快速插入大批量数据存储过程  (11/05/2012 19:04:04)
本文评论 查看全部评论 (0)
表情: 姓名: 字数