UFN_GETNEXTDATE
Returns next date given a frequency and date
Return
Return Type |
---|
date |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@FREQUENCY | int | IN | |
@NEXTSCHEDULEDDATE | date | IN |
Definition
Copy
CREATE function [dbo].[UFN_GETNEXTDATE] (
@FREQUENCY INT,
@NEXTSCHEDULEDDATE date)
returns date
begin
declare @RETVAL date
declare @DAY int
set @RETVAL = @NEXTSCHEDULEDDATE
while @RETVAL <= @NEXTSCHEDULEDDATE
begin
if @FREQUENCY = 1 --ANNUALLY
set @RETVAL = dateadd(yyyy, 1, @RETVAL)
if @FREQUENCY = 2 --SEMI-ANNUALLY
set @RETVAL = dateadd(m, 6, @RETVAL)
if @FREQUENCY = 3 --QUARTYERLY
set @RETVAL = dateadd(m, 3, @RETVAL)
if @FREQUENCY = 5 --MONTHLY
set @RETVAL = dateadd(m, 1, @RETVAL)
if @FREQUENCY = 4 --BIMONTHLY
set @RETVAL = dateadd(m, 2, @RETVAL)
if @FREQUENCY = 6 --SEMI-MONTHLY
begin
set @DAY = Day(@RETVAL)
if @DAY < 15
set @RETVAL = dateadd(d, 15 - @DAY, @RETVAL)
else
begin
set @RETVAL = dateadd(m, 1, @RETVAL)
set @DAY = Day(@RETVAL)
set @RETVAL = dateadd(d, (-1 * @DAY) + 1, @RETVAL)
end
end
if @FREQUENCY = 7 --BIWEEKLY
set @RETVAL = dateadd(d, 14, @RETVAL)
if @FREQUENCY = 8 --WEEKLY
set @RETVAL = dateadd(d, 7, @RETVAL)
end
return @RETVAL
end