本文主要記錄在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...