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) = '' 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生成日期维度(到小时)的更多相关文章
- Sqlserver存储过程生成日期维度
话不多说,之前已经有一篇日志是利用oracle的存储过程生成日期维度表,接下来我们就用sqlserver来实现这个操作,如下面的步骤所示 1:创建日期维度表(Dim_time) USE [DW] GO ...
- Oracle存储过程生成日期维度
在数据仓库的创建过程中,往往需要创建日期维度来为以后的数据分析来服务. 方面从多个日期角度: 如:年-月-日,年-季度-月-日,年-周-日 创建表的脚本如下(存储过程的创建过程中有一步操作是向time ...
- C# 生成日期维度值
1. 时间维度表结构 /*==============================================================*/ /* Table: dim_date_day ...
- DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate TIME Dimension)
DAX/PowerBI系列 - 关于时间系列 - 如何用脚本生成时间维度 (Generate TIME Dimension) 难度: ★☆☆☆☆(1星) 适用范围: ★★★★★(5星) 这个时间系列想 ...
- sql生成一个日期表
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Auth ...
- SQL根据两个日期生成年、月、日
1 DECLARE @beginTime DATETIME, @endTime DATETIME 2 SET @beginTime ='2019-03-01' 3 SET @endTime ='201 ...
- MySQL学习笔记:生成时间维度表
# ---- 对应时间戳怎么生成的? ---- /*TIME_CD TIME_CD1000000 000005000001 000005000002 000005000003 000005000004 ...
- SQL 语句日期用法及函数
SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class --返回天 ...
- c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”
ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述 相关代码 using System; us ...
随机推荐
- 1053 Path of Equal Weight (30)(30 分)
Given a non-empty tree with root R, and with weight W~i~ assigned to each tree node T~i~. The weight ...
- 「CF779B」「LOJ#10201.」「一本通 6.2 练习 4」Sherlock and His Girlfriend(埃氏筛
题目描述 原题来自:Codeforces Round #400 B. Sherlock 有了一个新女友(这太不像他了!).情人节到了,他想送给女友一些珠宝当做礼物. 他买了 nnn 件珠宝.第 iii ...
- hdu 3625 Examining the Rooms —— 第一类斯特林数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3625 学习斯特林数:https://blog.csdn.net/qq_33229466/article/d ...
- alter table *** add constraint *** 用法---约束
1.主键约束:要对一个列加主键约束的话,这列就必须要满足的条件就是分空因为主键约束:就是对一个列进行了约束,约束为(非空.不重复)以下是代码 要对一个列加主键,列名为id,表名为emp 格式为:a ...
- unreal Script(US)一些注意事项
转自:http://www.cnblogs.com/dongbo/archive/2012/07/10/2585311.html 1.如果计算量很大,考虑使用native Code来完成. 2.如果代 ...
- idea 调试技巧1
1 多线程调试 开发过多线程应用的朋友应该有体会,有些时候,为了观察多个线程间变量的不同状态,以及锁的获取等,就会想到在代码里加个断点debug一下. 在IDE里断点停下来的时候,可以切换到另外的线程 ...
- JMETER 定时器 之 常数吞吐量定时器
定时器: 默认情况下,Jmeter线程在发送请求之间没有间歇.建议为线程组添加某种定时器,以便设定请求之间应该隔多长时间.如果测试人员不设定这种延迟,Jmeter可能会在短时间内产生大量访问请求,导致 ...
- 如何使用Git命令将项目从github或者服务器上克隆下来
在本地新建一个文件夹,作为本地仓库,如“demo”.单击右键git Bush here,打开git,输入命令: cd /c/Users/Administrator/Desktop/demo 然后按回 ...
- 面试题: 数据库 sql优化 sql练习题 有用 学生表,课程表,成绩表,教师表 练习
什么是存储过程?有哪些优缺点? 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL.T-SQL). 存储过程的优点: 能够将代码封装起来 保存在数据库之 ...
- Working Experience - WPF 中 DataGrid 控件的应用
问题: 添加控件后, 编辑单元格会出现异常 绑定 ItemsSource 属性后, 更新绑定对象的数据, UI 不刷新 如何显示控件中 ComboBox 类型 解决方法: 绑定 ItemsSource ...