Sunday, April 27, 2014

SQL Query to create a Time Dimension at 15 mins granuality

You can try as below. For Half Yearly and Quarter, you can join with a custom table containing Month Name, First Half Year, Second Hald Year and Quaters.



DECLARE @YEAR INT
SET @YEAR = 2014
;WITH TIMER AS
(
SELECT DT = CAST('01/01/' + CAST(@YEAR AS VARCHAR) + ' 00:00:00' AS DATETIME),
MON = DATENAME(M,CAST('01/01/' + CAST(@YEAR AS VARCHAR) + ' 00:00:00' AS DATETIME)),
YR = YEAR(CAST('01/01/' + CAST(@YEAR AS VARCHAR) + ' 00:00:00' AS DATETIME)),
WD = DATENAME(W,CAST('01/01/' + CAST(@YEAR AS VARCHAR) + ' 00:00:00' AS DATETIME)),
WW = DATENAME(WW,CAST('01/01/' + CAST(@YEAR AS VARCHAR) + ' 00:00:00' AS DATETIME))
UNION ALL
SELECT DATEADD(n, 15, DT),
DATENAME(M,DATEADD(n, 15, DT)),
YEAR(DATEADD(n, 15, DT)),
DATENAME(W,DATEADD(n, 15, DT)),
DATENAME(WW,DATEADD(n, 15, DT))
FROM TIMER
WHERE DATEADD(n, 15, DT) <= CAST('12/31/' + CAST(@YEAR AS VARCHAR) + ' 00:00:00' AS DATETIME)
)
SELECT DT,MON,YR,WD,WW FROM TIMER OPTION (MAXRECURSION 0)



Regards, RSingh


No comments:

Post a Comment