通用日期维表生成脚本

浏览: 1599

insert into t_date_dm

select

to_number(to_char(time,'yyyymmdd')) date_uid, 

time date_id, 

substr(trim(to_char(time,'DAY')),0,3) day_name, 

decode(to_char(time, 'd')-1,0,7,

to_char(time, 'd')-1) cal_day_number_in_week, 

trunc(time)-trunc(time,'month')+1 cal_day_number_in_month, 

trunc(time)-TRUNC(time,'Q')+1 cal_day_number_in_quarter, 

to_char(time,'ddd') cal_day_number_in_year, 

to_char(time,'ww')  cal_week_number, 

case when trunc(time)-add_months(trunc(last_day(time)),-1)<=7 then 1

when trunc(time)-add_months(trunc(last_day(time)),-1)>=8 and trunc(time)-add_months(trunc(last_day(time)),-1)<=14 then 2 

when trunc(time)-add_months(trunc(last_day(time)),-1)>=15 and trunc(time)-add_months(trunc(last_day(time)),-1)<=21 then 3 

when trunc(time)-add_months(trunc(last_day(time)),-1)>=22 and trunc(time)-add_months(trunc(last_day(time)),-1)<=28 then 4

 else 5 end  cal_week_number_in_month, 

case when trunc(time)-add_months(trunc(last_day(time)),-1)<=7 then add_months(trunc(last_day(trunc(time))+1),-1)+6

when trunc(time)-add_months(trunc(last_day(time)),-1)>=8 and trunc(time)-add_months(trunc(last_day(time)),-1)<=14 then add_months(trunc(last_day(trunc(time))+1),-1)+13 

when trunc(time)-add_months(trunc(last_day(time)),-1)>=15 and trunc(time)-add_months(trunc(last_day(time)),-1)<=21 then add_months(trunc(last_day(trunc(time))+1),-1)+20 

when trunc(time)-add_months(trunc(last_day(time)),-1)>=22 and trunc(time)-add_months(trunc(last_day(time)),-1)<=28 then add_months(trunc(last_day(trunc(time))+1),-1)+27

 else trunc(last_day(trunc(time))+1) end cal_week_ending_day, 

to_number(to_char(time,'yyyymm')) cal_month_no, 

substr(trim(to_char(time,'MONTH')),0,3) cal_month_name, 

to_char(time,'yyyy-mm') cal_month_desc, 

trunc(to_char(time,'mm')) cal_month_number, 

trunc(last_day(time))-add_months(trunc(last_day(time))+1,-1) cal_days_in_month, 

add_months(trunc(last_day(time))+1,-1) cal_begin_of_month, 

trunc(last_day(time)) cal_end_of_month, 

to_number(to_char(time,'yyyy')||''||decode(to_number(to_char(TRUNC(time,'Q'),'mm')),1,1,4,2,7,3,10,4)) cal_quarter_no, 

to_char(time,'yyyy')||'-Q'||decode(to_number(to_char(TRUNC(time,'Q'),'mm')),1,1,4,2,7,3,10,4) cal_quarter_desc, 

decode(to_number(to_char(TRUNC(time,'Q'),'mm')),1,1,4,2,7,3,10,4) cal_quarter_number, 

last_day(last_day(last_day(TRUNC(time,'Q'))+1)+1)-TRUNC(time,'Q') cal_days_in_quarter, 

TRUNC(time,'Q') cal_begin_of_quarter, 

last_day(last_day(last_day(TRUNC(time,'Q'))+1)+1) cal_end_of_quarter, 

to_number(to_char(time,'yyyy')) cal_year_no, 

add_months(trunc(time,'YYYY'),12)-1-trunc(time,'YYYY') cal_days_in_year, 

trunc(time,'YYYY') cal_begin_of_year, 

add_months(trunc(time,'YYYY'),12)-1 cal_end_of_year

from (select to_date(20170101,'yyyymmdd')+rownum-1 time from dual connect by rownum<36540)

推荐 0
本文由 592444087@qq.com 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册