2013-03-30 3 views
1

Я пытаюсь создать пользовательские номера и диапазоны недель на основе введенного пользователем Начального дня недели.sql настраиваемые диапазоны недель

Я пропустил этот Пользовательский день с помощью SET Datefirst = @Userdefinedvalue (используя функцию для сопоставления начальных значений дня недели с T-SQL). Также у меня есть функция, чтобы получить меня в последний день текущей недели.

Каков наилучший подход для этого?

Моя цель: если я выбираю вторник, как мой старт день недели хранимых процедур для создания моих неделю число и начало/конец даты, основанный на мой выбор в течение всего года

+0

[Добро пожаловать в StackOverflow!] (Http://stackoverflow.com/faq) Это сообщество замедлителем Q/сайт, поэтому я взял на себя смелость улучшить форматирование вашего Опубликовать немного. Надеюсь, ты не против =) Счастливое кодирование! –

+0

Вы ищете результаты запроса или хотите обновить таблицу? –

+0

Результаты запроса, которые будут созданы в течение всего года. – Milen

ответ

1

Идея заключается в том, чтобы найти воскресенье. Во-первых, используйте SQL Server, встроенные в функции, чтобы перенести начало недели на воскресенье (в США) путем вычитания datepart(wd). Фактически datepart(wd) возвращает значения от 1 до 7, и мы хотим, чтобы они были от 0 до 6.

Затем добавьте обратно в офсет в зависимости от вашей даты недели. Вот пример кода:

declare @offset int (case when @DateFirst = 'Mon' then 1 
          when @DateFirst = 'Tue' then 2 
          ... 
          when @DateFirst = 'Sun' then 0 
        end); 

select dateadd(dd, @offset - (datepart(wd, thedate) - 1) 
       thedate) as WeekStartDate 
+0

Спасибо, я посмотрю на него – Milen

+0

Это работает отлично. Я использую: «Выберите @DateToUse = DATEADD (YEAR, DATEDIFF (YEAR, 0, GETDATE()), 0) 'в поле ввода первого дня года на вашем примере. Спасибо. – Milen

Смежные вопросы