USP_RESOLVEDATEFILTER
Sets date values based on a enum passed in.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATEFILTER | tinyint | IN | |
@STARTDATE | datetime | INOUT | |
@ENDDATE | datetime | INOUT | |
@ASOFDATE | datetime | IN |
Definition
Copy
CREATE procedure [dbo].[USP_RESOLVEDATEFILTER]
@DATEFILTER tinyint,
@STARTDATE datetime output,
@ENDDATE datetime output,
@ASOFDATE datetime = NULL --Allows you to resolve a relative range such as This Year in terms of an AsOf date instead of the current date.
as
set nocount on;
if @DATEFILTER=0
-- specific dates, do not alter the dates passed in
return 0;
if @ASOFDATE is null set @ASOFDATE = getdate();
set @STARTDATE = @ASOFDATE;
set @ENDDATE = @STARTDATE;
-- @DATEFILTER=1 is for today only
if @DATEFILTER=2 begin
-- Next 7 days
set @ENDDATE = dateadd(day,7,@ENDDATE);
end else if @DATEFILTER=3 begin
-- Last 7 days
set @STARTDATE = dateadd(day,-7,@STARTDATE);
end else if @DATEFILTER=4 begin
-- Next 30 days
set @ENDDATE = dateadd(day,30,@ENDDATE);
end else if @DATEFILTER=5 begin
-- Last 30 days
set @STARTDATE = dateadd(day,-30,@STARTDATE);
end else if @DATEFILTER=6 begin
-- Current month
set @STARTDATE = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=7 begin
-- Previous month
set @STARTDATE = dbo.UFN_DATE_LASTMONTH_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_LASTMONTH_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=8 begin
-- Next 12 months
set @ENDDATE = dateadd(year,1,@ENDDATE);
end else if @DATEFILTER=9 begin
-- Last 12 months
set @STARTDATE = dateadd(year,-1,@STARTDATE);
end else if @DATEFILTER=10 begin
-- All dates
set @STARTDATE = '17530102';
set @ENDDATE = '99991230';
end else if @DATEFILTER=11 begin
-- Current fiscal year
set @STARTDATE = dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=12 begin
-- Previous fiscal year
set @STARTDATE = dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(dateadd(year,-1,@STARTDATE), 0);
set @ENDDATE = dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(dateadd(year,-1,@ENDDATE), 1);
end else if @DATEFILTER=13 begin
-- Next fiscal year
set @STARTDATE = dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(dateadd(year,1,@STARTDATE), 0);
set @ENDDATE = dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(dateadd(year,1,@ENDDATE), 1);
end else if @DATEFILTER=14 begin
-- Within 7 days
set @STARTDATE = dateadd(day,-7,@STARTDATE);
set @ENDDATE = dateadd(day,7,@ENDDATE);
end else if @DATEFILTER=15 begin
-- Within 30 days
set @STARTDATE = dateadd(day,-30,@STARTDATE);
set @ENDDATE = dateadd(day,30,@ENDDATE);
end else if @DATEFILTER=16 begin
-- This calendar year
set @STARTDATE = dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=17 begin
-- Last calendar year
set @STARTDATE = dbo.UFN_DATE_LASTCALENDARYEAR_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_LASTCALENDARYEAR_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=18 begin
-- Next calendar year
set @STARTDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=19 begin
-- This week
set @STARTDATE = dbo.UFN_DATE_THISWEEK_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISWEEK_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=20 begin
-- Last week
set @STARTDATE = dbo.UFN_DATE_LASTWEEK_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_LASTWEEK_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=21 begin
-- Next week
set @STARTDATE = dbo.UFN_DATE_NEXTWEEK_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTWEEK_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=22 begin
-- Next month
set @STARTDATE = dbo.UFN_DATE_NEXTMONTH_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTMONTH_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=23 begin
-- This quarter
set @STARTDATE = dbo.UFN_DATE_THISQUARTER_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISQUARTER_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=24 begin
-- Last quarter
set @STARTDATE = dbo.UFN_DATE_LASTQUARTER_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_LASTQUARTER_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=25 begin
-- Next quarter
set @STARTDATE = dbo.UFN_DATE_NEXTQUARTER_FIRSTDAY(@STARTDATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTQUARTER_LASTDAY(@ENDDATE, 1);
end else if @DATEFILTER=26 begin
--No date assigned
set @STARTDATE = null
set @ENDDATE = null
end else if @DATEFILTER=27 begin
--Remainder of the month
set @ENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@ENDDATE,1);
end else if @DATEFILTER=28 begin
--Remainder of this fiscal year
set @ENDDATE = dbo.UFN_DATE_THISFISCALYEAR_LASTDAY(@ENDDATE,1);
end else if @DATEFILTER=29 begin
-- Last 6 months
set @STARTDATE = dateadd(month,-6,@STARTDATE);
end else if @DATEFILTER=30 begin
-- Last 24 months
set @STARTDATE = dateadd(year,-2,@STARTDATE);
end
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
return 0;