登录
首页 >  数据库 >  MySQL

mysql中生成时间维度的存储过程(存储过程示例)

来源:SegmentFault

时间:2023-01-26 19:37:57 372浏览 收藏

大家好,今天本人给大家带来文章《mysql中生成时间维度的存储过程(存储过程示例)》,文中内容主要涉及到MySQL、存储过程,如果你对数据库方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

本文主要记录在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());
    -- 定义异常处理方式  https://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

调用存储过程

-- TRUNCATE table dim_date;
call getAllDate();

到这里,我们也就讲完了《mysql中生成时间维度的存储过程(存储过程示例)》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>