UFN_JOBSCHEDULE_DATEVALID
Returns whether a date fits a start and end date time pair for a job.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@dt | datetime | IN | |
@OCCURRENCETYPE | tinyint | IN | |
@STARTDATETIME | datetime | IN | |
@STARTMONTHDAY | UDT_MONTHDAY | IN | |
@ENDDATETIME | datetime | IN | |
@ENDMONTHDAY | UDT_MONTHDAY | IN |
Definition
Copy
create function dbo.UFN_JOBSCHEDULE_DATEVALID(@dt datetime, @OCCURRENCETYPE tinyint,
@STARTDATETIME datetime, @STARTMONTHDAY dbo.UDT_MONTHDAY,
@ENDDATETIME datetime, @ENDMONTHDAY dbo.UDT_MONTHDAY) returns bit with execute as caller
as
begin
declare @retval as bit;
declare @MONTH as int;
declare @DAY as int;
if @dt is null
return 0;
if @OCCURRENCETYPE = 2 --ongoing
return 1;
if @OCCURRENCETYPE = 0 --onetime
if @dt between @STARTDATETIME and @ENDDATETIME
return 1;
if @OCCURRENCETYPE = 1 --recurring
set @MONTH = month(@dt);
set @DAY = day(@dt);
if @STARTMONTHDAY <= @ENDMONTHDAY
begin
if (@MONTH > left(@STARTMONTHDAY,2)
or (@MONTH = left(@STARTMONTHDAY,2) and @DAY>= right(@STARTMONTHDAY,2)))
and
(@MONTH < left(@ENDMONTHDAY,2)
or (@MONTH = left(@ENDMONTHDAY,2) and @DAY<= right(@ENDMONTHDAY,2)))
return 1;
end
else
begin
if (@MONTH > left(@STARTMONTHDAY,2)
or (@MONTH = left(@STARTMONTHDAY,2) and @DAY>= right(@STARTMONTHDAY,2)))
or (@MONTH < left(@ENDMONTHDAY,2)
or (@MONTH = left(@ENDMONTHDAY,2) and @DAY<= right(@ENDMONTHDAY,2)))
return 1;
end
return 0;
end