Maybe there is this table, your work will be much easier! Create Table [DBO]. [Time_ID] [INT] Identity (1, 1) NOT NULL, [THE_DATE] [DATETIME] NULL, [THE_DAY] [NVARCHAR] (15) NULL, [THE_MONTH] [nvarchar] (15) NULL, [THE_YEAR] NULL, [DAY_OF_MONTH] [Smallint] null, [Week_of_Year] [Smallint] null, [MONTH_OF_YEAR] [Smallint] NULL, [Quarter] [NVARCHAR] (2) NULL, [Fiscal_Period ] [nvarchar] (20) NULL) ON [PRIMARY] DECLARE @WeekString varchar (12), @ dDate SMALLDATETIME, @ sMonth varchar (20), @ iYear smallint, @ iDayOfMonth smallint, @ iWeekOfYear smallint, @ iMonthOfYear smallint, @ sQuarter VARCHAR (2), @ ssql varchar (100), @ adddays int search @addday = 1 - Date increment (free setting) Select @ddate = '01/01 / 2002 '- Start Date While @ddate < '12 / 31/2004 '- End Date Begin Select @Weekstring = Datename (DW, @ddate) Select @ smhood = datename (mm, @ DDATE) SELECT @ Iyear = Datename (YY, @ddate) Select @ iDayofmonth = Datename (DD, @ddate) SELECT @ iWeekofyear = Datename (Week, @ddate) Select @ iMonthofyear = DatePart (Month, @ddate) SELE CT @sQuarter = 'Q' CAST (DATENAME (quarter, @dDate) as varchar (1)) INSERT INTO time_dimension (the_date, the_day, the_month, the_year, day_of_month, week_of_year, month_of_year, quarter) VALUES (@dDate, @WeekString , @SMONTH, @iyear, @iweekofyear, @iWeekofyear, @squarter, @Squarter, @Squarter, @ddate @adddaysendgo Select * from time_dimension