Wielkanoc, święta, dni wolne…

by Marcin Goł on August 4th, 2009

Co jakiś czas na forum wss.pl powraca temat jak zrobić kalendarz żeby było dobrze, żeby obliczał święta ruchome, żeby nie trzeba ich było wklepywać z palca itd itd. Podejścia do tematu możemy zrobić min. takie 2 rozwiązania:

  1. robimy prostą tabelę przechowującą dni świąteczne (w roku jest ich kilkanaście więc nawet można je wpisać ręcznie)
  2. robimy tabelę przechowującą wszystkie dni z interesującego nas zakresu i oznaczamy w niej dni “specjalne” będące np. dniem wolnym, weekendem itd

Jak się łatwo domyśleć drugie podejście jest o wiele bardziej uniwersalne pozwala łatwo wyliczyć liczbę dni pracujących pomiędzy datami itd.

Robiąc wczoraj porządki na laptopie znalazłem mój kod napisany bardzo dawno temu, który robi właśnie tabelę z kalendarzem i oznacza w niej święta oraz kilka innych ciekawych faktów.

co otrzymacie po wykonaniu skrypty:

1) tabelę dbo.mgDatyKalendarz z kolumnami:

  1. data datetime,
  2. rok,
  3. rok_przestepny,
  4. kwartal_roku,
  5. miesiac_roku,
  6. tydzien_roku,
  7. dzien_roku,
  8. dzien_miesiaca,
  9. dzien_miesiaca_ostatni,
  10. dzien_tygodnia,
  11. dzien_wolny,
  12. uwagi

2) funkcję wyliczającą datę Wielkanocy dla danego roku (dbo.mgDatyPobierzWielkanoc)

3) funkcję sprawdzającą czy dany rok jest rokiem przestępnym (dbo.mgDatyCzyRokPrzestepny)

4) procedurę wypełniającą tabelę kalendarza (dbo.mgDatyWypelnij)

Uwaga końcowa: powinniście dostosować rozwiązanie (kolumny w tabeli z datami oraz indeksy) na własne potrzeby – w szczególności indeksy, których nie ma.

Jeśli ktoś uważa że załączony kod może mu się przydać – nie ma problemu, jednakże jest dostarczany “as is” i nie odpowiadam jeśli wywoła jakieś szkody (aczkolwiek u mnie działa ;-)).

Link: kalendarz.sql

From → Skrypty

Comments are closed.