SQL点滴5—产生时间demention,主要是时间转换




 vSET ANSI_NULLS ON
  GO
 
  SET QUOTED_IDENTIFIER ON
 GO
 
 /*--------------------------------------------------------
 *generate Date demention
 *@startdate '01/01/2010'
 *@enddate   '12/30/2010'
 ---------------------------------------------------------*/
 
 CREATE PROCEDURE dbo.AddDateTime
 @startdate datetime,
 @enddate datetime
 AS
   declare @i int
   set @i=1
   
   while(DATEDIFF(DD,@startdate,@enddate)>=0)
   begin
   
   insert into [ReportServer].[dbo].[D_DATE](
     [DATE_KEY],                  --primarykey
     [DATE],                      --datetime
     [FULL_DATE_DESCRIPTION],     --detail date
     [DAY_OF_WEEK],               --day of week from 1 to 6
     [CALENDAR_MONTH],            --month of year from 1 to 12
     [CALENDAR_YEAR],             --year
     [FISCAL_YEAR_MONTH],         --fiscal year
     [HOLIDAY_INDICATOR],         --holiday iden
     [WEEKDAY_INDICATOR])
   select
   @i,
   CONVERT(varchar(10),@startdate,101),
   DATENAME(mm,@startdate)+' '+DATENAME(DD,@startdate)+', '+DATENAME(YYYY,@startdate),
   DATEPART(DW,@startdate),
   DATEPART(MM,@startdate),
   DATEPART(YYYY,@startdate),
   'F'+ CONVERT(varchar(7),@startdate,23),
   case
   when( CONVERT(varchar(5),@startdate,101) in ('01/01','01/05','02/05','03/05','01/10','02/10','03/10','04/10','05/10','06/10') ) then  1
   else 0 end,
   case
   when(DATENAME(DW,@startdate) in ('Saturday','Sunday')) then 1
   else 0 end
    
   if DATEDIFF(DD,@startdate,@enddate)>=0
   
   begin
   set @startdate = DATEADD(dd,1,@startdate)
   set @i=@i+1
   continue
   end
   
   else
   
   begin
   break
   end
   
   end

数据仓库中有时间表,存储时间信息,这个存储过程接收开始时间结束时间,写入时间具体信息。有高手用excel函数功能很快能产生INSERT语句不会啊,只能用这个。

参考知识



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值