Funkcja zliczająca dni robocze w SQL Server


Jeśli w SQL Server brakuje jakiejś ważnej funkcji, z pewnością jest to m.in. funkcja pozwalająca nam zliczać dni robocze pomiędzy datami. Poniżej prosty przykład takiej funkcji. Uwzględnia ona takie warunki jak:

  • Zwraca różnicę pomiędzy dwiema datami w liczbach całkowitych
  • Pomija weekendy i święta (w naszym przypadku święta dla lat 2015 i 2016).
  • Jeśli daty, będące argumentami funkcji są dniami świątecznymi lub weekendowymi – są pomijane. Data “Od” przyjmuje wartość kolejnego dnia roboczego.
  • Jeśli data “od” oraz “do” są sobie równe, wynikiem funkcji będzie 0. Jeśli data “od” oraz “do” to dwa kolejne dni robocze- wynikiem funkcji będzie 1
  • W przypadku, gdy data “od” jest późniejsza od daty “do” – wynikiem funkcji będzie 0. Nie pokazujemy wyników w formie ujemnej.
  • W przypadku, gdy brakuje któregoś z argumentów funkcji – wynikiem będzie NULL.

Teraz możemy sprawdzić działanie naszej funkcji następującym kodem:

Wynikiem naszej funkcji w tym wypadku będzie:
———–
10

(1 row(s) affected)

Rozbudujmy naszą funkcję.  Chcemy, uzupełnić nasze warunki o kolejne:

  • Dodajemy kolejny argument funkcji określający, czy wynik funkcji chcemy widzieć w formie liczb całkowitych, czy też w liczbach po przecinku. 0-wynik w liczbach całkowitych 1-wynik w formie liczb po przecinku (FLOAT)

Na sam koniec sprawdzamy wynik naszej funkcji:

———————-
10,5023255813953

(1 row(s) affected)

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany.