SQL Datepart - начало недели в понедельник вместо воскресенья

Я столкнулся с проблемой в запросе с использованием datepart. Мы использовали следующий запрос для возврата данных за последние три недели, однако недавно мы обнаружили, что корпоративная отчетная неделя с понедельника по воскресенье, в то время как приведенный ниже запрос по умолчанию соответствует воскресенью-субботе. Я пробовал "SET LANGUAGE BRITISH" и "SET DATEFIRST 1", но, должно быть, я плохо разбираюсь в этих функциях, поскольку они не меняют результаты моего запроса. Я должен упомянуть, что мы работаем на сервере sql 2000. Если вы знаете решение, ваша помощь будет оценена по достоинству:

declare @name varchar(50);
set @name = 'A name here';

SELECT week, year, CallCount, GoodCalls, CAST(CAST(GoodCalls as float)/CAST(CallCount as float)as decimal (18,4)) as NCP_perc
FROM
(SELECT TOP 3 datepart(ww, a.date_c) as week
,datepart(year, a.date_c) as year
      ,SUM(CallCount_wo_Xfer) as CallCount
      ,ROUND(SUM(CAST((CallCount_wo_Xfer*NCP_wo_Xfer)as float)),0) as GoodCalls
      FROM db1 A
      inner join db2 B
      on a.Agent = b.Name collate database_default
      inner join db3 C
      on b.id = c.id collate database_default
      where c.manager = @name
      group by datepart(year, a.date_c), datepart(ww, a.date_c)) AS T
      order by year desc, week desc

person user852062    schedule 19.07.2011    source источник


Ответы (2)


Понедельник - это второй день, так что попробуй

SET DATEFIRST 2
person gbn    schedule 19.07.2011

Set DateFirst 2 пропустит первые два дня, если вы хотите начать с понедельника. Используйте Set DateFirst 1

person Adnan Muhammad    schedule 11.09.2014
comment
Добро пожаловать в Stack Overflow. OP попытался использовать SET DATEFIRST 1 и сообщает, что ничего не изменилось. Возможно, что-то еще не так, но в любом случае это бесполезно, пока вы не объясните, что еще должен попробовать OP или почему это не сработало для него. - person Gutblender; 11.09.2014