`

MySQL 生成 时间轴

 
阅读更多

调用一个存储过程或函数:

DROP PROCEDURE IF EXISTS pro_dim_date;

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 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 = utf8

酷

分享到:
评论

相关推荐

    Mysql时间轴数据 获取同一天数据的前三条

    这里我们探讨如何获取同一天数据的前三条记录,以及如何利用MySQL生成时间轴数据。 首先,我们创建一个名为`praise_info`的表,用于存储包含时间戳的数据。表结构如下: ```sql CREATE TABLE `praise_info` ( `id...

    PHP+MYSQL生成HTML静态网站导航商业版

    · 可设置每个网址的过期时间,到期自动屏蔽,方便管理收费链接 · 用户注册及自定义网址收藏夹功能,留住用户 · 点入来路自动统计排行功能,流量返还,方便推广 · 全站生成HTML · 自定义生成HTML的目录和文件名...

    PHP+MYSQL生成HTML静态页面带后台管理网站导航程序

    · 可设置每个网址的过期时间,到期自动屏蔽,方便管理收费链接 · 用户注册及自定义网址收藏夹功能,留住用户 · 点入来路自动统计排行功能,流量返还,方便推广 · 全站生成HTML · 自定义生成HTML的目录和文件名...

    VC 生成随机数曲线.rar

    - 数据库中可能包含表来存储随机数,包括生成的时间、数值、分布类型等信息,以便后续分析和绘图。 4. **程序实现步骤**: - 初始化随机数种子,确保每次运行时生成不同的随机数序列。 - 选择适当的分布,生成...

    mysqltool.rar

    5. 查询构建器:提供可视化的查询构建工具,用户可以通过拖拽字段和选择操作符来生成复杂的SQL查询,而无需直接编写SQL语句,降低了学习门槛。 6. 用户权限管理:允许管理员分配不同的用户权限,控制用户对数据库...

    mysql图形化界面 (非常好用)

    - 提高效率:通过图形化操作,减少了手动输入SQL语句的时间。 - 减少错误:减少由于手动编写SQL语句可能导致的语法错误。 - 代码自动生成:自动生成可以复制和修改的SQL脚本。 - 多环境支持:支持多种操作系统,...

    php+mysql完整企业源码

    3. 数据展示:系统会将从数据库中获取的数据,如新闻标题、内容、发布时间等,动态渲染成HTML页面展示给用户,提供友好的阅读体验。 4. 搜索功能:用户可以通过关键词搜索历史新闻,系统将利用SQL的LIKE语句或者...

    [MySQL中文增强版

    MySQL中文增强版是一款专为初学者设计的数据库管理系统,它在标准MySQL的基础上进行了优化和本地化,以便于中文用户理解和使用。这个版本保留了MySQL的核心功能,同时提供了更友好的中文界面和帮助文档,降低了学习...

    PHP+MYsql留言本

    同时,将时间戳转换为易读的日期格式,方便用户理解留言的时间。 通过学习和实践“PHP+MySQL留言本”项目,你可以掌握PHP和MySQL的基础知识,了解Web开发中的数据交互过程,并为更复杂的Web应用打下坚实的基础。这...

    mysql 连接工具

    同时,如果需要恢复到某个特定时间点,也可以轻松实现。 5. 数据导入导出:支持多种格式的数据导入导出,如CSV、Excel、XML等,方便数据迁移和交换。 6. 图形化视图:SQLyog提供图表和图形视图,帮助用户更好地...

    php+mysql新闻发布管理系统

    在这个系统中,MySQL存储了所有新闻文章的信息,如标题、内容、作者、发布时间等,以及分类和其他元数据。通过SQL查询,PHP能够轻松地从数据库中获取或更新数据。 系统的基本工作流程如下: 1. **用户界面**:用户...

    实体+SQL语句生成器

    这款生成器的主要功能是自动生成实体类和相应的SQL语句,从而节省了手动编写这些代码的时间和精力。 实体类在编程中扮演着重要的角色,特别是在对象关系映射(ORM)框架中,它们是数据模型的直观表示。实体类通常...

    PHP+MYSQL时间管理系统(代码+论文).rar

    3. **时间线视图**:提供一个清晰的时间线,让用户直观地看到任务的进度和时间安排。 4. **提醒功能**:系统可以设置自动提醒,确保用户不会错过任何重要的截止日期。 5. **统计分析**:通过数据分析,展示用户或...

    mysql

    支持增删改查操作,还可以进行批量更新和删除,节省了编写SQL语句的时间。 2. **数据库设计**:它允许用户通过拖放方式设计和修改表结构,包括字段类型选择、设置键、索引等,简化了数据库模式的创建和维护。 3. *...

    java反向生成实体工具

    在实际应用中,使用Java反向生成实体工具不仅可以节省大量手动编码的时间,还能减少因人工操作导致的错误,提升代码质量。开发者只需专注于业务逻辑,而无需过多关注底层数据结构的映射。同时,对于初学者来说,这样...

    SQL实体生成器远吗

    5. 性能考虑:虽然实体生成器减少了手动编写SQL的时间,但过度依赖可能会导致性能问题,尤其是对大数据量操作时,需要合理设计数据访问层。 学习SQL实体生成器的同时,也要关注相关的最佳实践,比如数据库设计的...

    一个自动生成HTML的新闻系统ASP程序

    5. 时间线显示:根据发布日期排序新闻,展示最新的在前。 在压缩包中的“k666.com”可能是该新闻系统的源码文件或者部署后的网站文件夹。要运行和使用这个系统,你需要拥有一个支持ASP的Web服务器环境,例如IIS...

    Java代码生成器-基于springboot-多种数据库-5.5.7z

    Java代码生成器是一种工具,它能够自动生成符合特定需求的Java源代码,极大地提高了开发效率,减少了手动编写重复代码的时间。在"Java代码生成器-基于springboot-多种数据库-5.5.7z"这个压缩包中,我们可以推测这是...

Global site tag (gtag.js) - Google Analytics