mysql中生成時間維度的儲存過程(儲存過程示例)

2021-09-12 19:23:33 字數 2013 閱讀 1604

本文主要記錄在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());

-- 定義異常處理方式

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();

mysql中生成時間維度的儲存過程(儲存過程示例)

本文主要記錄在bi和資料分析過程中碰到的生成時間維度的問題,另外也是乙個mysql的儲存過程基礎示例 包含 儲存過程基本語法 變數定義 while迴圈 異常處理 以下儲存過程生成了以當前日期為基準前後3650天的日期記錄 sql如下 create table dim date id int 8 no...

mysql中生成時間維度的儲存過程(儲存過程示例)

本文主要記錄在bi和資料分析過程中碰到的生成時間維度的問題,另外也是乙個mysql的儲存過程基礎示例 包含 儲存過程基本語法 變數定義 while迴圈 異常處理 以下儲存過程生成了以當前日期為基準前後3650天的日期記錄 sql如下 create table dim date id int 8 no...

建立時間維度表的儲存過程

在建立bi資料倉儲時,時常需要用到時間維度,通過儲存過程一次性批量生成,語句如下 create procedure dbo create time by day dimension add the parameters for the stored procedure here asbegin se...