#建表语句:

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. FAQrobot 聊天机器人笔记

    follow: https://github.com/ofooo/FAQrobot  这是一个简单的基于问词匹配的自动问答,获取与用户问句Q1最匹配的知识库中的问句Q2,Q2的答案就是Q1的答案. 首 ...

  2. 001-Bootstrap栅格系统

    1 安装和基本使用 外文官网 中文官网 可以正常下载使用 有三个文件夹, 分别是css, fonts, js bootstrap/ ├── css/ │ ├── bootstrap.css │ ├── ...

  3. codewar代码练习1——8级晋升7级

    最近发现一个不错的代码练习网站codewar(http://www.codewars.com).注册了一个账号,花了几天的茶余饭后时间做题,把等级从8级升到了7级.本文的目的主要介绍使用感受及相应题目 ...

  4. nginx rewrite 导致验证码不正确

    配置nginx里url rewrite的时候,为了使浏览器地址栏的URL保持不变, 使用proxy_pass反向代理,但发现每次都会生成新的jsessionid 解决方法,配置中增加 proxy_co ...

  5. javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题

    javacpp-ffmpeg系列: javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片 javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转 ...

  6. VS2008 查找失效怎么办

    按Ctrl+F没有反应?   visual studio 里 查找替换 显示不出来;   还能用 让他查找个不存在的文本还会弹出找不到的提示; 就是看不到 查找替换的操作框了;   问题解决方法:   ...

  7. Hive安装&nbsp;&nbsp;&nbsp;&nbsp;…

    Hive安装 mysql使用主机(win7)上的mysql数据库,启动后,要关闭360和win7自带的防火墙,确保在虚拟机里能拼通主机********************************* ...

  8. windows7如何打开远程桌面&nbsp;-…

    单位的机器,刚装上了windows7旗舰版(当然不是花银子滴),想打开远程桌面连接,这样从别的机器登录也方便.可是问题来了,windows7对安全的设置比较高,不像windows XP那么随便一点就可 ...

  9. SSE优化指令集编译错误: inlining failed in call to always_inline 'xxx': target specific option mismatch xxx

    在用QtCreator编译SSE优化指令的时候,出现了如下错误, inlining failed in call to always_inline '__m128i _mm_packus_epi32( ...

  10. select2,利用ajax高效查询大数据列表(可搜索、可分页)

    二.导入css和js到网站上 1.使用CDN,节省自己网站的流量 ? 1 2 <link href="https://cdnjs.cloudflare.com/ajax/libs/se ...