Script for Dimension table for Time.
Here Date_ID is the primary key which can be used as the
foreign key in the fact tables.
CREATE TABLE [dbo].[DATE_DIM]
(
[DATE_ID] [bigint] IDENTITY(1, 1)
NOT NULL
,[SQL_DATE]
[datetime] NOT NULL
,[DAY]
[smallint] NOT NULL
,[DAY_OF_WEEK]
[smallint] NULL
,[WEEK]
[smallint] NOT NULL
,[MONTH]
[SMALLINT] NOT NULL
,[QUARTER]
[SMALLINT] NOT NULL
,[YEAR]
[SMALLINT] NOT NULL
,[DAY_OF_YEAR]
[SMALLINT] NOT NULL
,[DAY_TEXT]
[VARCHAR](50) NOT NULL
,[MONTH_TEXT]
[VARCHAR](50) NOT NULL
,[QUARTER_TEXT]
[VARCHAR](50) NOT NULL
)
declare @date datetime
declare
@enddate datetime
set @date = CONVERT(datetime,'01-01-2012')
set @enddate = CONVERT(datetime,'12-31-2025')
while @date <= @enddate
begin
insert into DATE_DIM
([SQL_DATE]
,[day]
,[DAY_OF_WEEK]
,[WEEK]
,[MONTH]
,[QUARTER]
,[YEAR]
,[DAY_OF_YEAR]
,[DAY_TEXT]
,[MONTH_TEXT]
,[QUARTER_TEXT]
)
select
@date as
sqldate
,datepart(D,@date) as [day]
,datepart(DW,@date) as [day_of_week]
,DATEPART(WK,@date) as [week]
,DATEPART (M,@date) as [month]
,DATEPART(Q,@date) as [quarter]
,DATEPART(DY,@date) as [day_of_year]
,DATEPART(Y,@date) as [year]
,DATENAME(DW,@date) as day_text
,DATENAME(M,@date) as month_text
,'Q' + CONVERT(CHAR(1), DATENAME(QQ, @DATE)) AS QUARTERTEXT
set @date = DATEADD(D,1,@date)
end