Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Null on Null Input | False |
| Schema Bound | False |
| Assembly |
Parameters
3| Name | Data Type | Length | Description |
|---|---|---|---|
| (Result) | datetime | 8 | |
| @fromDate | datetime | 8 | |
| @daysToAdd | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE OR ALTER FUNCTION dbo.Imperium_SLA_Days
(@fromDate datetime,@daysToAdd INT)
RETURNS DATETIME
AS
begin
DECLARE @SLADay DATETIME
/*
select @fromDate = getdate(),@DaysToAdd = 3
*/
declare @Saturday int
select @Saturday = DATEPART(weekday,@fromDate)
;with Numbers as (
select 0 as n union all select 1 union all select 2 union all select 3 union all select 4
), Split as (
select @DaysToAdd%5 as PartialDays,@DaysToAdd/5 as WeeksToAdd
), WeekendCheck as (
select WeeksToAdd,PartialDays,MAX(CASE WHEN DATEPART(weekday,DATEADD(day,n.n,@fromDate))=@Saturday THEN 1 ELSE 0 END) as HitWeekend
from
Split t
left join
Numbers n
on
t.PartialDays >= n.n
group by WeeksToAdd,PartialDays
)
select @SLADay= DATEADD(day,WeeksToAdd*7+PartialDays+CASE WHEN HitWeekend=1 THEN 2 ELSE 0 END,@fromDate) from WeekendCheck
RETURN @SLADay
end
GO
GO
CREATE OR ALTER FUNCTION dbo.Imperium_SLA_Days
(@fromDate datetime,@daysToAdd INT)
RETURNS DATETIME
AS
begin
DECLARE @SLADay DATETIME
/*
select @fromDate = getdate(),@DaysToAdd = 3
*/
declare @Saturday int
select @Saturday = DATEPART(weekday,@fromDate)
;with Numbers as (
select 0 as n union all select 1 union all select 2 union all select 3 union all select 4
), Split as (
select @DaysToAdd%5 as PartialDays,@DaysToAdd/5 as WeeksToAdd
), WeekendCheck as (
select WeeksToAdd,PartialDays,MAX(CASE WHEN DATEPART(weekday,DATEADD(day,n.n,@fromDate))=@Saturday THEN 1 ELSE 0 END) as HitWeekend
from
Split t
left join
Numbers n
on
t.PartialDays >= n.n
group by WeeksToAdd,PartialDays
)
select @SLADay= DATEADD(day,WeeksToAdd*7+PartialDays+CASE WHEN HitWeekend=1 THEN 2 ELSE 0 END,@fromDate) from WeekendCheck
RETURN @SLADay
end
GO