SQL: Podział miesiąca na tygodnie

29-Cze-2015

Problem:

Microsoft wypuszcza aktualizacje w drugi wtorek miesiąca. Aktualizacje są instalowane na serwerach w pierwszym, drugim, trzecim i kolejnych tygodniach po publikacji. Jak przeliczyć datę instalacji na numer tygodnia?

Oto propozycja, która przynajmniej częściowo rozwiązuje ten problem:

DECLARE @SecondTuesday AS DATETIME = '2015-06-10'
DECLARE @InstallDate AS DATETIME = '2015-06-19'
SELECT
  CASE
    WHEN @InstallDate BETWEEN @SecondTuesday AND DATEADD(d,7,@SecondTuesday) THEN 1
    WHEN @InstallDate BETWEEN DATEADD(d,7,@SecondTuesday) AND DATEADD(d,14,@SecondTuesday) THEN 2
    WHEN @InstallDate BETWEEN DATEADD(d,14,@SecondTuesday) AND DATEADD(d,21,@SecondTuesday) THEN 3
    WHEN @InstallDate BETWEEN DATEADD(d,21,@SecondTuesday) AND DATEADD(d,29,@SecondTuesday) THEN 4
    ELSE 5
  END AS WeekNumber

Dodaj komentarz:

Autor: Rafał Kraik