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

本文共 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();
你可能感兴趣的文章
读《做单--成交的秘密》有感
查看>>
shell脚本如何监控程序占用带宽?
查看>>
如何定位cpu占用率高的java线程?
查看>>
GRE over IPSEC 同时NAT-T(Profile PAT)
查看>>
Excel 2016中的新增函数之SWITCH
查看>>
Python的几种实现
查看>>
C#反射的Assembly的简单应用
查看>>
《鸟哥的Linux私房菜》7章 Linux文件与目录管理 习题答案
查看>>
请投资自己,不会花钱的人没前途
查看>>
C#基础知识整理:基础知识(4) 继承
查看>>
perl注释多行
查看>>
Service Manager R2管理服务器安装
查看>>
一道面试问题学生们的多种解答汇总
查看>>
Windows Server 2012正式版RDS系列④
查看>>
企业长寿的乔氏秘诀
查看>>
NOSQL系列-Redis精简版安装与Ruby测试
查看>>
【VMware混合云】应用为王
查看>>
Photoshop制作一个质感的卡通小公仔
查看>>
为小米手环的定价叫好
查看>>
2011年中国虚拟主机服务商排行榜
查看>>