博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql中生成时间维度的存储过程(存储过程示例)
阅读量:6006 次
发布时间:2019-06-20

本文共 1832 字,大约阅读时间需要 6 分钟。

本文主要记录在BI和数据分析过程中碰到的生成时间维度的问题,另外也是一个mysql的存储过程基础示例

包含:存储过程基本语法、变量定义、while循环、异常处理

以下存储过程生成了以当前日期为基准前后3650天的日期记录

sql如下:

创建表:

CREATE TABLE `dim_date` (  `id` int(8) NOT NULL DEFAULT '0',  `key` date NOT NULL DEFAULT '0000-00-00',  `year` int(4) NOT NULL,  `quarter` int(1) NOT NULL,  `month` int(2) NOT NULL,  `week` int(1) NOT NULL COMMENT '星期',  `weekofyear` int(2) NOT NULL COMMENT '一年中的第几周',  `day` int(2) NOT NULL COMMENT '日',  `dayofyear` int(3) NOT NULL COMMENT '一年总的第几天',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

存储过程:

delimiter //DROP PROCEDURE IF EXISTS getAllDate; CREATE PROCEDURE getAllDate()BEGIN    DECLARE count int default 0;    DECLARE startDay DATE DEFAULT date(now());    DECLARE endDay DATE DEFAULT DATE(NOW());    -- 定义异常处理方式  http://www.cnblogs.com/cookiehu/p/4994278.html    DECLARE out_status VARCHAR(200) DEFAULT 'OK';    DECLARE CONTINUE HANDLER      FOR 1062    SET out_status='Duplicate Entry';    -- 异常处理方式完毕    WHILE count<3650 DO            INSERT INTO `dim_date`(`id`, `key`, `year`, `quarter`, `month`, `week`, `weekofyear`, `day`, `dayofyear`) VALUES (cast(DATE_FORMAT(startDay,'%Y%m%d') as UNSIGNED), startDay, YEAR(startDay), QUARTER(startDay), MONTH(startDay), WEEKDAY(startDay)+1, week(startDay,1), DAY(startDay), DAYOFYEAR(startDay));            set count = count +1;            set startDay = DATE_ADD(DATE(now()),INTERVAL count DAY);            SET endDay = DATE_SUB(DATE(NOW()),INTERVAL count DAY);            INSERT INTO `dim_date`(`id`, `key`, `year`, `quarter`, `month`, `week`, `weekofyear`, `day`, `dayofyear`) VALUES (cast(DATE_FORMAT(endDay,'%Y%m%d') as UNSIGNED), endDay, YEAR(endDay), QUARTER(endDay), MONTH(endDay), WEEKDAY(endDay)+1, week(endDay,1), DAY(endDay), DAYOFYEAR(endDay));    END WHILE;END//delimiter ;

调用存储过程

-- TRUNCATE table dim_date;call getAllDate();
你可能感兴趣的文章
非、半、结构化数据学习【转载】
查看>>
avalon加载一闪而过现象
查看>>
Python学习第二天-编写购物车
查看>>
BigTable——针对结构型数据的一种分布式存储系统
查看>>
python调用c/c++写的dll
查看>>
r语言ggplot2误差棒图快速指南
查看>>
python之处理异常
查看>>
遍历form表单里面的表单元素,取其value
查看>>
面试110道题
查看>>
python 08 文件操作
查看>>
强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1
查看>>
Gradle 配置debug和release工程目录
查看>>
curl指令的使用
查看>>
LNAMP第二版(nginx 1.2.0+apache 2.4.2+php 5.4)
查看>>
MongoDB repl set权限认证配置步骤
查看>>
java学习笔记(1)
查看>>
禁止Mysql默认端口访问Internet - MySQL - IT技术网
查看>>
基于用户投票的排名算法(二):Reddit
查看>>
下午最后的草坪
查看>>
Maven学习总结(七)——eclipse中使用Maven创建Web项目
查看>>