Я работаю над проектом, в котором мне нужно установить даты начала и окончания плана .
Планы должны быть настроены так, чтобы дата обновления плана былато же самое для всех месяцев (или после желаемых месяцев) .
Если план (ежемесячный) начинается 11 июня, срок его действия должен быть 10 июля, чтобы он мог продолжаться со следующих 11, а затем следующего11 и так далее.И если план является годовым для той же начальной даты, он должен истечь 10 июня, чтобы новая дата начала снова была 11 июня и т. Д.
Здесь мне нужно проверить, не существует ли даты истечения срока действия, напримересли планы начинаются с 31 января, то в этом сценарии у нас нет даты 30 февраля (даты истечения срока ее действия), для даты истечения срока следует указать 28 февраля, а если високосный год должен быть 29 февраля (последняя из недействительных датmonth).
Для того же я ищу функцию udf сервера sql, которая кроме 2-х параметров datetime и количества месяцев.Здесь он должен вернуть новую дату (дату истечения) после добавления месяцев (что является вторым параметром).
Попытка ниже, но не получая логику, как это сделать.
--print dbo.[Bill_FnDateFormatPackageEndDate]('2018-06-11 12:25',1)
CREATE function [dbo].[Bill_FnDateFormatPackageEndDate]
(
@datetime datetime,
@months int
)
returns nvarchar(40)
begin
declare @date nvarchar(40)
declare @testdate nvarchar(40)
declare @day nvarchar(2)
declare @month nvarchar(2)
declare @year nvarchar(4)
declare @time nvarchar(10)
if ISDATE(@datetime)=1
begin
set @day = day(@datetime)
set @month = month(@datetime)+1
set @year = year(@datetime)
set @testdate =@year+'/'+@month+'/'+@day
if ISDATE(@testdate)=1
set @date=DATEADD(day, -1, @testdate )
end
return @date
end