日期维表数据生成方法(Oracle方式)

通过编写存储过程填充日期维表

这种方法可以生成时间段任意长的日期维表数据。

首先创建日期维表:

create  table  DIM_DATE_T
(
   F_DATE DATE ,
   F_YEAR  VARCHAR2(10),
   F_MONTH VARCHAR2(10),
   F_DAY   VARCHAR2(10),
   F_WEEK  VARCHAR2(20)
)

其次创建用于生成数据的存储过程:

create  or  replace  procedure  fill_dim_date_t_p(start_date in  char , end_date in  char ) as
   v_counter number := 0;
   v_max number := 0;
begin
   execute  immediate 'truncate table dim_date_t' ;
   v_max := to_number(TO_DATE(end_date, 'yyyy-mm-dd' )-TO_DATE(start_date, 'yyyy-mm-dd' ));
   loop
      insert  into  dim_date_t (F_DATES,F_YEAR,F_MONTH,F_DAY,F_WEEK)
      values  (
      TO_DATE(start_date, 'yyyy-mm-dd' )+v_counter,
      to_char(TO_DATE(start_date, 'yyyy-mm-dd' ) + v_counter, 'yyyy' ),
      to_char(TO_DATE(start_date, 'yyyy-mm-dd' ) + v_counter, 'mm' ),
      to_char(TO_DATE(start_date, 'yyyy-mm-dd' ) + v_counter, 'dd' ),
      to_char(TO_DATE(start_date, 'yyyy-mm-dd' ) + v_counter, 'day' )
      );
      exit when   v_counter >= v_max;
      v_counter := v_counter+1;
    end  loop;
    commit ;
end  fill_dim_date_t_p;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值