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

本文介绍如何通过编写存储过程来生成任意时间段的日期维表数据,包括创建日期维表和实现填充数据的存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

首先创建日期维表:

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、付费专栏及课程。

余额充值