Skip to content

Instantly share code, notes, and snippets.

@philippwiddra
Created May 17, 2018 09:18
Show Gist options
  • Save philippwiddra/208a5a0f66e9872ab27222f1310e1bc3 to your computer and use it in GitHub Desktop.
Save philippwiddra/208a5a0f66e9872ab27222f1310e1bc3 to your computer and use it in GitHub Desktop.
DECLARE @day datetime
SET @day = '18000101'
DECLARE @dimDaysVar TABLE (
[DayKey] int,
[Year] smallint,
[Month] tinyint,
[Day] tinyint,
[DayOfWeek] tinyint,
[Week] tinyint,
[Quarter] tinyint,
[YearMonth] int,
[YearWeek] int,
[YearQuarter] int
)
WHILE (@day < '22000101')
BEGIN
INSERT INTO @dimDaysVar ([DayKey], [Year], [Month], [Day], [DayOfWeek], [Week], [Quarter], [YearMonth], [YearWeek], [YearQuarter])
VALUES (
DATEPART(YEAR, @day) * 10000 + DATEPART(MONTH, @day) * 100 + DATEPART(DAY, @day),
DATEPART(YEAR, @day),
DATEPART(MONTH, @day),
DATEPART(DAY, @day),
DATEPART(WEEKDAY, @day),
DATEPART(ISO_WEEK, @day),
DATEPART(QUARTER, @day),
DATEPART(YEAR, @day) * 100 + DATEPART(MONTH, @day),
IIF(DATEPART(ISO_WEEK, @day) > 50 AND DATEPART(MONTH, @day) = 1, (DATEPART(YEAR, @day) - 1) * 100 + DATEPART(ISO_WEEK, @day), DATEPART(YEAR, @day) * 100 + DATEPART(ISO_WEEK, @day)),
DATEPART(YEAR, @day) * 10 + DATEPART(QUARTER, @day))
SET @day = DATEADD(day, 1, @day)
END
INSERT INTO [dbo].[DimDays] SELECT * FROM @dimDaysVar
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment