#建表语句:

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. 在Windows7 下 mingw32 开发环境中采用 glut3.7 学习 OpenGL

    2015年10月2日更新: 发现 freeglut 很好用兼容于 gut ,而且开源还在更新中.因此我觉得放弃以前的 glut 了,转而用 freeglut 了. 买了本<计算机图形学第4版&g ...

  2. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

    py文件直接在cmd窗口用python命令执行时正常:代码逐句在ipython中也正常:但是, 在wingIDE中运行报错“UnicodeEncodeError: 'ascii' codec can' ...

  3. 使用TortoiseGit同步代码到github远程仓库

    1.clone github上的代码仓库的URL 可以用HTTPS,SSH, or Subversion 2.同步push 到远程仓库时 要用 SSH地址,同生成SSH private key ,在g ...

  4. Linux 中安装软件报缺少共享库文件的错误

    linux 安装一些如软件 或者相关的模块时,经常报出缺少一些依赖包的 libxxx.so等的共享库文件 首先找到 该共享库文件 然后查看/etc/ld.so.conf 这个文件记录了编译时使用的动态 ...

  5. NO2:设置RedHat Linux下的samba开机启动

    安装的samba默认不是开机启动的,这样每次都要进入系统人为启动,很不方便,当然系统肯定可以设置开机启动的. 因为我的是RedHat Linux系统,支持chkconfig命令直接配置,会简单些,其它 ...

  6. windows 查看物理内存有几条以及查看电脑系统版本号的命令(dxdiag)

  7. poj3254二进制放牛——状态压缩DP

    题目:http://poj.org/problem?id=3254 利用二进制压缩状态,每一个整数代表一行的01情况: 注意预处理出二进制表示下没有两个1相邻的数的方法,我的方法(不知为何)错了,看到 ...

  8. Tomcat加载servlet类文件

    问题1:tomcat什么时候加载servlet? 有两种情况 一种是启动时加载 一种是请求时加载 第一种是在web.xml中的<servlet>节点下增加类似:<load-on-st ...

  9. [xdoj1233]Glory and LCS

    题意:求两个排列的最长公共子序列n<=1e5 解题关键:转化为LIS. 最长公共子序列 的 nlogn 的算法本质是 将该问题转化成 最长增序列(LIS),因为 LIS 可以用nlogn实现,所 ...

  10. (一)新建一个javaweb项目

    一.为了不影响其他项目,可以重新选择一个新的工作目录:swith workspace 二.为了尽可能统一项目,所使用的编程环境,包括:Tomcat.JRE都是项目组自己的,所以在新建项目的时候要注意选 ...