Tag Archive for SQL Server

Creating a simple time of day dimension

I needed to cre­ate a really sim­ple time of day dimen­sion the other day, so I thought I’d share my solu­tion. My setup:

  • SQL Server 2008

First off cre­ate the table. This is a basic table, and looks as follows:

CREATE TABLE [dbo].[DimTimeOfDay](
[Dim­Time­Of­DayID] [int] IDENTITY(1,1) NOT NULL,
[Hour] [tinyint] NULL,
[Minute] [tinyint] NULL,
[Name] [varchar](5) NULL,
CONSTRAINT [PK_DimTimeOfDay] PRIMARY KEY CLUSTERED
(
[Dim­Time­Of­DayID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

And now the script to pop­u­late it.

DECLARE @Hour INT

DECLARE @Minute INT

SET @Hour = 0

SET @Minute = 0;

WHILE @Hour < 24

BEGIN

WHILE @Minute < 60

BEGIN

INSERT INTO Dim­Time­Of­Day (Hour, Minute) VALUES (@Hour, @Minute)

SET @Minute = @Minute + 1

END

SET @Minute = 0;

SET @Hour = @Hour + 1

UPDATE Dim­Time­Of­Day SET Name = RIGHT(‘00’ + CAST(Hour AS VARCHAR), 2) + ‘:’ + RIGHT(‘00’ + CAST(Minute AS VARCHAR), 2)

END

Noth­ing ground­break­ing, but per­haps this will save some­one out there a cou­ple of min­utes. Enjoy.