MS SQL Server 创建时间维度
来源:互联网 发布:东风(十堰)整合优化 编辑:程序博客网 时间:2024/04/24 14:03
Simple Steps to create Date Dimension in Microsoft SQL Server.
CREATE TABLE Numbers_Small (Number INT);
INSERT INTO Numbers_Small VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
-- Works in SQL Server 2008.Insert statements has to be modified for older versions.
CREATE TABLE Numbers_Big (Number_Big BIGINT);
INSERT INTO Numbers_Big ( Number_Big )
SELECT thousands.number * 1000 + hundreds.number * 100 + tens.number * 10 + ones.number as number_big
FROM numbers_small thousands, numbers_small hundreds, numbers_small tens, numbers_small ones;
CREATE TABLE [dbo].[Date_D](
[DateKey] [int] NOT NULL,
[Date] [datetime] NOT NULL,
[Day] [char](10) NULL,
[DayOfWeek] [smallint] NULL,
[DayOfMonth] [smallint] NULL,
[DayOfYear] [smallint] NULL,
[PreviousDay] [datetime] NULL,
[NextDay] [datetime] NULL,
[WeekOfYear] [smallint] NULL,
[Month] [char](10) NULL,
[MonthOfYear] [smallint] NULL,
[QuarterOfYear] [smallint] NULL,
[Year] [int] NULL
);
INSERT INTO Date_D (DateKey, Date)
SELECT number_big, DATEADD(day, number_big, '2010-01-01') as Date
FROM numbers_big
WHERE DATEADD(day, number_big, '2010-01-01') BETWEEN '2010-01-01' AND '2010-12-31'
ORDER BY number_big;
Use the following INSERT statement, if you want use a date format(eg: 20100203) as key instead of a number(eg: 123)
INSERT INTO Date_D (DateKey, Date)
SELECT CONVERT(INT, CONVERT(CHAR(10),DATEADD(day, number_big, '2010-01-01'), 112)) as DateKey,
CONVERT(DATE,DATEADD(day, number_big, '2010-01-01')) as Date
FROM numbers_big
WHERE DATEADD(day, number_big, '2010-01-01') BETWEEN '2010-01-01' AND '2010-12-31'
ORDER BY 1;
In above step, the date dimension records will be created for year 2010. Change the dates in the above statement to change the range.
UPDATE Date_D
SET Day = DATENAME(DW, Date),
DayOfWeek = DATEPART(WEEKDAY, Date),
DayOfMonth = DAY(Date),
DayOfYear = DATEPART(DY,Date),
PreviousDay = DATEADD(DAY, -1, Date),
NextDay = DATEADD(DAY, 1, Date),
WeekOfYear = DATEPART(WK,Date),
Month = DATENAME(MONTH,Date),
MonthOfYear = MONTH(Date),
QuarterOfYear = DATEPART(Q, Date),
Year = YEAR(Date);
DROP TABLE Numbers_Small;
DROP TABLE Numbers_Big;
- MS SQL Server 创建时间维度
- mysql创建时间维度的sql脚本
- ms sql server 创建用户
- 【MS SQL Server】sql server 创建作业
- 创建时间维度数据
- 时间维度创建
- 创建时间维度数据
- Oracle创建时间维度
- 抽取SQL Server数据库中时间维度表存储过程
- MS SQL Server 创建链接服务器
- Sql时间比较的问题MS-SQL Server
- mysql中创建时间维度
- MS SQL Server-比较日期和时间(转)
- MS SQL Server 中Convert转换时间的用法
- MS SQL SERVER中时间的精度问题
- MS SQL Server 表数据更新时间查询
- MS SQL Server中的 CONVERT 日期时间 格式化大全
- MS-SQL Server当前系统时间的日期部分
- ZOJ-3025
- 利用数组实现约瑟夫环
- mysql中创建时间维度
- 快速排序
- Oracle事务与函数
- MS SQL Server 创建时间维度
- 统计一个单位职工的年龄,要求把相同年龄最多的那个年龄找出来(可能有几个这样的年龄),并统计出现的次数
- Practical_C_Programming_chapter_7
- Oracle创建时间维度
- 黑马程序员 (7k面试) 交通灯程序设计学习总结
- java常用转义字符
- 最短路径问题
- 复制构造函数
- seo优化