代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
MSSQL
】
创建日期时间维度数据
作者:
dezai
/ 发布于
2014/6/23
/
986
方式一、 1建表: CREATE TABLE [dbo].[Dim_Date]( [DateKey] [int] NULL, --日期编号 [Date] [datetime] NULL, --日期 [Year] [float] NULL, --年 [Month] [float] NULL, --月 [Month EN] [nvarchar](50) NULL, --月【英文表示】 [Month Short EN] [nvarchar](50) NULL, --月【英文表示简称】 [Month CN] [nvarchar](50) NULL, --月【中文表示】 [Day] [float] NULL, --天 [Quarter] [float] NULL, --季度 [Quarter EN] [nvarchar](50) NULL, --季度【英文表示】 [Quarter CN] [nvarchar](50) NULL, --季度【中文表示】 [Weekday] [float] NULL, --周 [Weekday CN] [nvarchar](50) NULL, --周【中文表示】 [Weekday Short EN] [nvarchar](50) NULL, --周【英文简称表示】 [Week of Year] [float] NULL, --一年中的第几周 [Day of Year] [float] NULL, --一年中的第几天 [SemiYearly] [nvarchar](50) NULL, --半年 [Period of Ten Days] [nvarchar](10) NULL,--旬【中文表示】 [Period of Index] [nvarchar](2) NULL, --旬【英文表示】 [Weekend] [nvarchar](5) NULL --工作日 ) ON [PRIMARY] GO 2.建存储过程 SET DATEFIRST 7 --设周日为每周的第一天 GO --向日期表插入数据 DECLARE @b1 DATETIME set @b1='2000-01-01' --设置起始日期 WHILE @b1<'2014-01-01' --设置截止日期 BEGIN INSERT INTO dbo.[Dim_Date] ( [DateKey], [Date], [Year], [Month], [Month EN], [Month Short EN], [Month CN], [Day], [Quarter], [Quarter EN], [Quarter CN], [Weekday], [Weekday CN], [Weekday Short EN], [Week of Year], [Day of Year], [SemiYearly], [Period of Ten Days], [Period of Index] , [Weekend] ) VALUES( CONVERT(NVARCHAR(10),@b1,112), --DateKey 1 @b1, --Date 2 DATEPART(year, @b1), --Year 3 DATEPART(month, @b1), --Month 4 CASE --Month EN 5 when (DATEPART(month, @b1))='1' then 'January' when (DATEPART(month, @b1))='2' then 'February' when (DATEPART(month, @b1))='3' then 'March' when (DATEPART(month, @b1))='4' then 'April' when (DATEPART(month, @b1))='5' then 'May' when (DATEPART(month, @b1))='6' then 'June' when (DATEPART(month, @b1))='7' then 'July' when (DATEPART(month, @b1))='8' then 'August' when (DATEPART(month, @b1))='9' then 'September' when (DATEPART(month, @b1))='10' then 'October' when (DATEPART(month, @b1))='11' then 'November' else 'December' END, CASE --Month Short En 6 when (DATEPART(month, @b1))='1' then 'Jan' when (DATEPART(month, @b1))='2' then 'Feb' when (DATEPART(month, @b1))='3' then 'Mar' when (DATEPART(month, @b1))='4' then 'Apr' when (DATEPART(month, @b1))='5' then 'May' when (DATEPART(month, @b1))='6' then 'Jun' when (DATEPART(month, @b1))='7' then 'Jul' when (DATEPART(month, @b1))='8' then 'Aug' when (DATEPART(month, @b1))='9' then 'Sep' when (DATEPART(month, @b1))='10' then 'Oct' when (DATEPART(month, @b1))='11' then 'Nov' else 'Dec' END, CASE --Month CN 7 when (DATEPART(month, @b1))='1' then N'一月' when (DATEPART(month, @b1))='2' then N'二月' when (DATEPART(month, @b1))='3' then N'三月' when (DATEPART(month, @b1))='4' then N'四月' when (DATEPART(month, @b1))='5' then N'五月' when (DATEPART(month, @b1))='6' then N'六月' when (DATEPART(month, @b1))='7' then N'七月' when (DATEPART(month, @b1))='8' then N'八月' when (DATEPART(month, @b1))='9' then N'九月' when (DATEPART(month, @b1))='10' then N'十月' when (DATEPART(month, @b1))='11' then N'十一月' else N'十二月' END, DATEPART(day, @b1),--day 8 DATEName (qq, @b1),--quarter 9 CASE --quarter en 10 when DATEName (qq, @b1)='1' then 'Q1' when DATEName (qq, @b1)='2' then 'Q2' when DATEName (qq, @b1)='3' then 'Q3' else 'Q4' END, CASE --quarter cn 11 when DATEName (qq, @b1)='1' then N'一季度' when DATEName (qq, @b1)='2' then N'二季度' when DATEName (qq, @b1)='3' then N'三季度' else N'四季度' END, DATEPART(dw, @b1),--Weekday 12 CASE --Weekday CN 13 when DATEPART(dw, @b1)=1 then N'星期日' when DATEPART(dw, @b1)=2 then N'星期一' when DATEPART(dw, @b1)=3 then N'星期二' when DATEPART(dw, @b1)=4 then N'星期三' when DATEPART(dw, @b1)=5 then N'星期四' when DATEPART(dw, @b1)=6 then N'星期五' else N'星期六' END, CASE --Weekday Short EN 14 --注意,周日是第一天. when DATEPART(dw, @b1)='1' then 'Sun' when DATEPART(dw, @b1)='2' then 'Mon' when DATEPART(dw, @b1)='3' then 'Tue' when DATEPART(dw, @b1)='4' then 'Wed' when DATEPART(dw, @b1)='5' then 'Thu' when DATEPART(dw, @b1)='6' then 'Fri' else 'Sat' END, DATEName (wk, @b1),--week of year 15 DATEName (dy, @b1),--day of year 16 CASE --SemiYearly 17 when DATEPART(month, @b1)<=6 then N'上半年' else N'下半年' END, CASE --Period of Ten Days 18 when DATEName (dd, @b1)<=10 then N'上旬' when DATEName (dd, @b1)>20 then N'下旬' else N'中旬' END, CASE --Period of Ten Days 19 when DATEName (dd, @b1)<=10 then N'1' when DATEName (dd, @b1)>20 then N'3' else N'2' END, CASE --Is it Weekend? 20 when DATEPART(dw, @b1)='1' then '周末' when DATEPART(dw, @b1)='7' then '周末' else '平时' END ) --日期加1天 set @b1=DATEADD(day, 1, @b1) END GO 方式二、 -- 上面生成日期,下边用视图生成 年、半年、季、月、日等 go create table tbl_MetaData_Date ( [Date] [datetime] NOT NULL, [Ten_Days] [datetime] NULL, [Half_Year] [datetime] NULL ) ON [PRIMARY] go create view v_metadata_date as select date, year(date) as year, month(date) as month, day(date) as day, case when datepart(weekday, date) = 1 then datediff(wk, convert(datetime, dateadd(yy, datediff(yy, 0, date), 0)), date) when datepart(weekday, date) > 1 then datediff(wk, convert(datetime, dateadd(yy, datediff(yy, 0, date), 0)), date) + 1 end as week, { fn quarter(date) } as quarter, ten_days, half_year, date as dayne from tbl_MetaData_Date go
试试其它关键字
日期
时间
维度数据
同语言下
.
SQL查询 多列合并成一行用逗号隔开
.
查看存储过程修改时间,最近执行时间
.
设置手动批量删除数据库相关进程
.
获取某个表中特定字段的所有字符串形式
.
SQL 如何去除重复的字符串
.
怎么去掉一个字段中的重复数据
.
String 去除空格 回车 换行 水平制表符
.
SQL查询和替换含有回车,空格,TAB
.
SQL SERVER 查询每日新增用户数量、次留数量
.
判断两个字符串是否存在相同的内容
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
dezai
贡献的其它代码
(
1065
)
.
双色球
.
列出所有物理网络适配器
.
快乐数的 Python 实现
.
计算当月还剩天数
.
猜属相
.
二十四小时时钟
.
每日一语
.
很酷的日历
.
超长日历表单
.
最简单的时钟
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3