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; 
  • 相关阅读:
    实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令
    实验 3:Mininet 实验——测量路径的损耗率
    福州大学软件工程实践个人编程作业
    实验 2:Mininet 实验——拓扑的命令脚本生成
    实验 1:Mininet 源码安装和可视化拓扑工具
    2020软件工程实践第一次作业
    魏迟燕的自走棋
    中位数之最
    A Simple Math Problem
    数字的升级准则
  • 原文地址:https://www.cnblogs.com/ycdx2001/p/3655869.html
Copyright © 2011-2022 走看看