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

王朝学院·作者佚名  2011-05-16
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

参考知识

Code highlighting PRoduced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

-- 1 vSET ANSI_NULLS ON

2 GO

3

4 SET QUOTED_IDENTIFIER ON

5 GO

6

7 /*--------------------------------------------------------

8 *generate Date demention

9 *@startdate '01/01/2010'

10 *@enddate '12/30/2010'

11 ---------------------------------------------------------*/

12

13 CREATE PROCEDURE dbo.AddDateTime

14 @startdate datetime,

15 @enddate datetime

16 AS

17 declare @i int

18 set @i=1

19

20 while(DATEDIFF(DD,@startdate,@enddate)>=0)

21 begin

22

23 insert into [ReportServer].[dbo].[D_DATE](

24 [DATE_KEY], --primarykey

25 [DATE], --datetime

26 [FULL_DATE_DESCRIPTION], --detail date

27 [DAY_OF_WEEK], --day of week from 1 to 6

28 [CALENDAR_MONTH], --month of year from 1 to 12

29 [CALENDAR_YEAR], --year

30 [FISCAL_YEAR_MONTH], --fiscal year

31 [HOLIDAY_INDICATOR], --holiday iden

32 [WEEKDAY_INDICATOR])

33 select

34 @i,

35 CONVERT(varchar(10),@startdate,101),

36 DATENAME(mm,@startdate)+' '+DATENAME(DD,@startdate)+', '+DATENAME(YYYY,@startdate),

37 DATEPART(DW,@startdate),

38 DATEPART(MM,@startdate),

39 DATEPART(YYYY,@startdate),

40 'F'+ CONVERT(varchar(7),@startdate,23),

41 case

42 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

43 else 0 end,

44 case

45 when(DATENAME(DW,@startdate) in ('Saturday','Sunday')) then 1

46 else 0 end

47

48 if DATEDIFF(DD,@startdate,@enddate)>=0

49

50 begin

51 set @startdate = DATEADD(dd,1,@startdate)

52 set @i=@i+1

53 continue

54 end

55

56 else

57

58 begin

59

break

60 end

61

62 end

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航