#建表语句:

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. poj1733 Parity game[带权并查集or扩展域]

    地址 连通性判定问题.(具体参考lyd并查集专题该题的转化方法,反正我菜我没想出来).转化后就是一个经典的并查集问题了. 带权:要求两点奇偶性不同,即连边权为1,否则为0,压缩路径时不断异或,可以通过 ...

  2. Money Systems

    链接 分析:来看看背包九讲里面的一段话: 对于一个给定了背包容量.物品费用.物品间相互关系(分组.依赖等) 的背包问题,除了再给定每个物品的价值后求可得到的最大价值外,还可以得 到装满背包或将背包装至 ...

  3. 数据结构与算法(4)----->链表、二分搜索

    1.  链表的基本概念 链表和数组一样都是一种线性结构; 数组是一段连续的存储空间; 链表空间不一定保证连续,是临时分配的; 链表的分类 按方向: 单链表:每个节点只能通过next指针指向下一个节点; ...

  4. iview之select选择框选中内容后有空格的问题

    导致原因: option组件格式化造成的.此处</Option>在另一行,只要和输出内容一行,就不会有空格了. <Select :label-in-value="true& ...

  5. 转:isualvm远程监控Tomcat

    一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. JVM 监控工具 Java VisualVM .jvisua ...

  6. shader之顶点着色器

    Vertex Shader 是渲染管道中一个可编程的模块,用于处理独立的顶点.Vertex Shader接收Vertex Attribute Data,由定点数组对象通过渲染指令来生成. Vertex ...

  7. CI框架中,判断post,ajax,get请求的方法

    CI框架当中并没有提供,类似tp框架中IS_POST,IS_AJAX,IS_GET的方法. 所有就得我们自己造轮子了.下面就介绍一下,如何定义这些判断请求的方法.其实很简单的. 首先打开constan ...

  8. CentOS6下用yum升级系统最新内核版本

    首先当你决定升级内核时,要想清楚为什么升级内核,因为升级内核会带来很多麻烦.所以这种事情能避免就避免 导入 Public Key rpm --import https://www.elrepo.org ...

  9. MS SQL Server的COALESCE函数

    MS SQL Server的COALESCE函数是从一系列表达式中返回第一个NOT NULL的值. 检查[B],[Q],[S],[T],[U]的值: 检查顺序[B]->[Q]->[S]-& ...

  10. OVN学习(一)

    参考文档 OVN学习系列参考博文 部署OVN实验环境 网络拓扑 ### Central节点 # cat ifcfg-ens3 TYPE=Ethernet BOOTPROTO=static DEFROU ...