#建表语句:

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) = '' THEN 'Q1'
WHEN Datename (qq, @BeginDate) = '' THEN 'Q2'
WHEN Datename (qq, @BeginDate) = '' 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) = '' THEN '周末'
WHEN Datepart(dw, @BeginDate) = '' THEN '周末'
ELSE '平时'
END AS '是否周末',
Day(@BeginDate) AS [日],
@hour AS [时] SET @hour=@hour + 1
END
END;

SQL生成日期维度(到小时)的更多相关文章

  1. Sqlserver存储过程生成日期维度

    话不多说,之前已经有一篇日志是利用oracle的存储过程生成日期维度表,接下来我们就用sqlserver来实现这个操作,如下面的步骤所示 1:创建日期维度表(Dim_time) USE [DW] GO ...

  2. Oracle存储过程生成日期维度

    在数据仓库的创建过程中,往往需要创建日期维度来为以后的数据分析来服务. 方面从多个日期角度: 如:年-月-日,年-季度-月-日,年-周-日 创建表的脚本如下(存储过程的创建过程中有一步操作是向time ...

  3. C# 生成日期维度值

    1. 时间维度表结构 /*==============================================================*/ /* Table: dim_date_day ...

  4. DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate TIME Dimension)

    DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate TIME Dimension) 难度: ★☆☆☆☆(1星) 适用范围: ★★★★★(5星) 这个时间系列想 ...

  5. sql生成一个日期表

    SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Auth ...

  6. SQL根据两个日期生成年、月、日

    1 DECLARE @beginTime DATETIME, @endTime DATETIME 2 SET @beginTime ='2019-03-01' 3 SET @endTime ='201 ...

  7. MySQL学习笔记:生成时间维度表

    # ---- 对应时间戳怎么生成的? ---- /*TIME_CD TIME_CD1000000 000005000001 000005000002 000005000003 000005000004 ...

  8. SQL 语句日期用法及函数

    SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天 ...

  9. c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”

    ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述     相关代码 using System; us ...

随机推荐

  1. leetcode 104 Maximum Depth of Binary Tree(DFS)

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  2. PHP中读写文件

    在PHP中读写文件,可以用到一下内置函数: 1.fopen(创建文件和打开文件) 语法: 复制代码代码如下:fopen(filename,mode) filename,规定要打开的文件.mode,打开 ...

  3. 暑假集训Chapter1 贪心

    为什么要今天写呢? 明天全力研究Johnson和一些奇奇怪怪的贪心 今天把能写的都写了 T1T2太水了直接上代码吧 #include<bits/stdc++.h> #define LL l ...

  4. python输入空格间隔的一行int

    str = input() list = [int(x) for x in str.split()] print(list) 用py刷题肯定得遇到空格间隔的键入,先str接收键入的一行字串,然后把st ...

  5. BZOJ_4987_Tree_树形DP

    BZOJ_4987_Tree_树形DP Description 从前有棵树. 找出K个点A1,A2,…,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. Input 第一 ...

  6. P1880 [NOI1995]石子合并[区间dp+四边形不等式优化]

    P1880 [NOI1995]石子合并 丢个地址就跑(关于四边形不等式复杂度是n方的证明) 嗯所以这题利用决策的单调性来减少k断点的枚举次数.具体看lyd书.这部分很生疏,但是我还是选择先不管了. # ...

  7. Ubuntu下Apache重启错误:Could not reliably determine解决

    错误信息:apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 ...

  8. 【转】Pro Android学习笔记(一):Android 平台 2013.6.4

    本系列是阅读<Pro Android4>的读书笔记,也包括网络阅读资料的整理,以及个人心得. 由于智能手机引入AP(应用处理器),Android在某种意义上是个人计算机,具有桌面计算机的完 ...

  9. websocket之二:WebSocket编程入门

    一.WebSocket客户端 websocket允许通过JavaScript建立与远程服务器的连接,从而实现客户端与服务器间双向的通信.在websocket中有两个方法: 1.send() 向远程服务 ...

  10. TCP 协议的消息

    TCP: SYN ACK FIN RST PSH URG 详解 TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并 ...