UFN_REPORT_BUILD_DATECOL_TABLE_STRING
Creates a date range temporary table creation statement.
Return
Return Type |
---|
nvarchar(700) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATETYPE | int | IN |
Definition
Copy
CREATE function dbo.UFN_REPORT_BUILD_DATECOL_TABLE_STRING(@DATETYPE int)
returns nvarchar(700)
with execute as caller
as
begin
declare @RETURNSTRING nvarchar(700);
declare @DATEPART nvarchar(7);
declare @SELECT nvarchar(200);
if @DATETYPE in (6,12,49,50)
begin
set @DATEPART = 'month';
set @SELECT = 'select substring(datename('+ @DATEPART + ', @DATESTART),1, 3) ';
end
if @DATETYPE in (43,45,51)
begin
set @DATEPART = 'quarter';
set @SELECT = 'select ''Q'' + datename('+ @DATEPART + ',@DATESTART) ';
end
if @DATETYPE in (7,13, 53, 54, 55)
begin
set @DATEPART = 'year';
set @SELECT = 'select datename('+ @DATEPART + ', @DATESTART) ';
end
set @SELECT = @SELECT + ', datepart(year, '+ ' @DATESTART) ';
set @RETURNSTRING = 'create table #DATECOL (DATECOL nvarchar(20) collate database_default,YEARCOL nvarchar(4) collate database_default)' +
' declare @DATESTART datetime = @STARTDATE;' +
' declare @ENDLIMIT int;' +
' declare @COUNTER int = 0;' +
' select @ENDLIMIT = datediff(' + @DATEPART + ',@STARTDATE, @ENDDATE);' +
' if @ENDLIMIT = 0' +
' begin' +
' insert into #DATECOL(DATECOL, YEARCOL) ' +
@SELECT +
' end' +
' else' +
' begin' +
' while @COUNTER <= @ENDLIMIT ' +
' begin' +
' insert into #DATECOL ' +
@SELECT +
' set @COUNTER = @COUNTER + 1;' +
' select @DATESTART = dateadd(' + @DATEPART + ', 1, @DATESTART);' +
' end' +
' end ';
return @RETURNSTRING
end