【数据库】mysql调用过程函数生成日期维表

写在前面的话

第一次使用sql中的函数部分,本文会记录sql函数的一些基础语法,如果你已经很熟练,请忽视掉

创建日期维表

使用环境 Navicat 12

创建存储日期的表(日期,日期的不同的表达形式,这一年的第几周,一年的第几个月,一年的第几个季度,上半年或下半年)

CREATE TABLE `dim_date` (
`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
`day_id` VARCHAR ( 10 ) DEFAULT NULL,
`day_short_desc` VARCHAR ( 10 ) DEFAULT NULL,
`day_long_desc` VARCHAR ( 50 ) DEFAULT NULL,
`dayofweek_id` VARCHAR ( 10 ) DEFAULT NULL,
`dayofweek_desc` VARCHAR ( 20 ) DEFAULT NULL,
`weekofyear_id` VARCHAR ( 20 ) DEFAULT NULL,
`weekofyear_long_desc` VARCHAR ( 50 ) DEFAULT NULL,
`monthofyear_id` VARCHAR ( 20 ) DEFAULT NULL,
`monthofyear_long_desc` VARCHAR ( 50 ) DEFAULT NULL,
`quarter_id` VARCHAR ( 20 ) DEFAULT NULL,
`quarter_long_desc` VARCHAR ( 20 ) DEFAULT NULL,
`half_a_year_id` VARCHAR ( 20 ) DEFAULT NULL,
`half_a_year_long_desc` VARCHAR ( 50 ) DEFAULT NULL,
`year_id` VARCHAR ( 20 ) DEFAULT NULL,
`year_long_desc` VARCHAR ( 50 ) DEFAULT NULL,
PRIMARY KEY ( `ID` ) 
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

创建过程函数

【数据库】mysql调用过程函数生成日期维表_第1张图片

 【数据库】mysql调用过程函数生成日期维表_第2张图片

这里我更新了代码,新代码需要创建两个in模式参数,并且规定了输入参数的格式

代码如下 

CREATE DEFINER=`dbo`@`%` PROCEDURE `create_date_dimension`(IN `start_date` varchar(20),IN `end_date` varchar(20))
BEGIN
# the input format is xxxx-xx-xx
# input the end_date until the day after the end
# if you want end_date be 2023-08-01,you should input 2023-08-02
	declare i int;
	declare date_count int;
	set i=0;
	set date_count=datediff(end_date,start_date);  
	while i

 直接保存运行函数即可

【数据库】mysql调用过程函数生成日期维表_第3张图片 SQL函数语法

declare 变量名 变量类型;

declare i int;

 set 变量赋值;

set i=0;

while 条件 do ... end while

while i < date_count DO  

        ...

        ...

end while;  

case 条件 when 1 then 1 end

case DAYOFWEEK(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'))  when 1 then '星期日' when 2 then '星期一' when 3 then '星期二' when 4 then '星期三' when 5 then '星期四' when 6 then '星期五' when 7 then '星期六' end 

常用的日期函数

点这个

你可能感兴趣的:(数据库,数据库,mysql)