1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
|
CRE�ëR FUNCTIE [dbo]. [CalcMinutesSLA_TFAM] (
@startTime DATETIME,
@endTime DATETIME
)
winst int.
zoals
begin
verklaar @minutes int.;
verklaar datetime @startPlus1
verklaar datetime @endLess1
-- werk de waaier binnen voor de volledige dagen - tussen uit
selecteer @startPlus1 = datediff (D, 0, @startTime+1),
@endLess1 = datediff (D, 0, @endTime-1)
-- controleer hoeveel niet-weekenddagen in dit gamma bestaan
selecteer @minutes = 480 * (bekeerling (int., @endLess1-@startPlus1) /7*5 + telling (*))
van hoofd. .spt_values
waar type='P en aantal tussen 0 en datediff (D,
@startPlus1+convert (int., @endLess1-@startPlus1) /7*7, @endLess1)
en datename (dw, @startPlus1+number)! = „S“
-- controleer hoeveel niet-weekendvakantie in dit gamma bestaat
selecteer @minutes = @minutes - telling (*)
van web_holidays
waar HolidayDate tussen @startPlus1 en @endless1
en weggegaan (datename (dw, HolidayDate), 1)! = „S“
-- pas eerst tijden/laatste dagen aan
als datepart (hh, @startTime) < 9="" set="">= 17 reeks @endTime = datediff (dd, 0, @endTime) +17.0/24
als @startTime >= @endTime terugkeert voeg me samen (@minutes, 0);
-- als de begindatum een vakantie en niet geen weekend is, voeg notulen toe
selecteer @minutes = @minutes +
datediff (mi, @startTime, datediff (dd, 0, @startTime) +17.0/24)
waar niet bestaat (
selecteer * uit web_holidays
waar HolidayDate = datediff (dd, 0, @startTime))
en weggegaan (datename (dw, @startTime), 1)! = „S“
-- als de einddatum een vakantie en niet geen weekend is, voeg notulen toe
selecteer @minutes = @minutes +
datediff (mi, datediff (dd, 0, @endTime) +9.0/24, @endTime)
waar niet bestaat (
selecteer * uit web_holidays
waar HolidayDate = datediff (dd, 0, @endTime))
en weggegaan (datename (dw, @endTime), 1)! = „S“
-- als start=end, wij de dag tweemaal hebben geteld, neem weg 480
selecteer @minutes = @minutes - 480
waar niet bestaat (
selecteer * uit web_holidays
waar HolidayDate = datediff (dd, 0, @endTime))
en weggegaan (datename (dw, @endTime), 1)! = „S“
en datediff (D, @startTime, @endTime) = 0 -- van dezelfde dag
de terugkeer voegt zich samen (@minutes, 0);
eind
GA
|