zoukankan      html  css  js  c++  java
  • SQL生成日期维度(到小时)

    #建表语句:

    CREATE TABLE [dbo].[Dim_日期3](
        [日期3ID] [varchar](10) NOT NULL,
        [] [int] NULL,
        [半年] [varchar](6) NULL,
        [] [varchar](2) NULL,
        [] [varchar](4) NULL,
        [] [varchar](6) NULL,
        [星期] [varchar](6) NULL,
        [是否周末] [varchar](4) NULL,
        [] [int] NULL,
        [] [int] NULL,
     CONSTRAINT [PK_Dim_日期3] PRIMARY KEY CLUSTERED 
    (
        [日期3ID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    #生成数据:

    DECLARE @BeginDate DATE;
    
    SELECT @BeginDate = '2013-1-1';
    
    WHILE @BeginDate <= '2014-12-31'
      BEGIN
          DECLARE @hour INT
          DECLARE @hourChar VARCHAR(2)
    
          SET @hour=0
          SET @BeginDate = Dateadd(DAY, 1, @BeginDate);
    
          WHILE @hour < 24
            BEGIN
                SET @hourChar=RIGHT(CONVERT(VARCHAR(3), 100+@hour), 2)
    
                INSERT INTO [Dim_日期3]
                SELECT CONVERT(VARCHAR(8), @BeginDate, 112) + @hourChar AS [日期ID],
                       Year(@BeginDate)                                 AS [],
                       CASE
                         WHEN Datepart(month, @BeginDate) <= 6 THEN '上半年'
                         ELSE '下半年'
                       END                                              AS [半年],
                       CASE
                         WHEN Datename (qq, @BeginDate) = '1' THEN 'Q1'
                         WHEN Datename (qq, @BeginDate) = '2' THEN 'Q2'
                         WHEN Datename (qq, @BeginDate) = '3' THEN 'Q3'
                         ELSE 'Q4'
                       END                                              AS [],
                       CASE
                         WHEN Month(@BeginDate) = 1 THEN '01月'
                         WHEN Month(@BeginDate) = 2 THEN '02月'
                         WHEN Month(@BeginDate) = 3 THEN '03月'
                         WHEN Month(@BeginDate) = 4 THEN '04月'
                         WHEN Month(@BeginDate) = 5 THEN '05月'
                         WHEN Month(@BeginDate) = 6 THEN '06月'
                         WHEN Month(@BeginDate) = 7 THEN '07月'
                         WHEN Month(@BeginDate) = 8 THEN '08月'
                         WHEN Month(@BeginDate) = 9 THEN '09月'
                         WHEN Month(@BeginDate) = 10 THEN '10月'
                         WHEN Month(@BeginDate) = 11 THEN '11月'
                         ELSE '12月'
                       END                                              AS [],
                       CASE
                         WHEN Datepart(WEEK, @BeginDate) < 10 THEN '第0' + CONVERT(VARCHAR(2), Datepart(WEEK, @BeginDate)) + ''
                         ELSE '' + CONVERT(VARCHAR(2), Datepart(WEEK, @BeginDate)) + ''
                       END                                              AS [],
                       Datename(WeekDay, @BeginDate)                    AS [星期],
                       CASE
                         WHEN Datepart(dw, @BeginDate) = '6' THEN '周末'
                         WHEN Datepart(dw, @BeginDate) = '7' THEN '周末'
                         ELSE '平时'
                       END                                              AS '是否周末',
                       Day(@BeginDate)                                  AS [],
                       @hour                                            AS []
    
                SET @hour=@hour + 1
            END
      END; 
  • 相关阅读:
    ASP.NET MVC 重点教程一周年版 第二回 UrlRouting
    ASP.NET MVC 重点教程一周年版 第三回 Controller与View
    DynamicData for Asp.net Mvc留言本实例 下篇 更新
    Asp.net MVC视频教程 18 单选与复选框
    使用ASP.NET MVC Futures 中的异步Action
    ASP.NET MVC RC 升级要注意的几点
    ATL、MFC、WTL CString 的今生前世
    msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
    关于Windows内存的一些参考文章
    Windows访问令牌相关使用方法
  • 原文地址:https://www.cnblogs.com/ycdx2001/p/3655869.html
Copyright © 2011-2022 走看看