2016-05-10 2 views
1

Я хочу вытащить все данные за неделю до предыдущего дня. например:начало недели (понедельник) за предыдущий день

, если дата была в понедельник 2016-05-09. Я хотел бы, чтобы предыдущий понедельник 2016-05-02 по воскресенье 2016-05-08.

Если дата была вторник 2016-05-10. Я хотел бы, чтобы предыдущий понедельник 2016-05-09 по понедельник 2016-05-09.

Я пробовал использовать без радости.

and (ShiftDate Between DATEADD(wk, 0, DATEADD(DAY, (1-DATEPART(WEEKDAY, GETDATE()-1)), DATEDIFF(dd, 0, GETDATE())))and GETDATE()-1) 

ответ

1

Вы должны использовать это:

and (ShiftDate Between (GETDATE() - 1 - (DATEPART(weekday, GETDATE() -1) + 7 - 2) % 7) 
         and (GETDATE()-1) 
    ) 

Поскольку Sunday является 1 в weekday, так что вы должны добавить затем модуль по получить отличается от ближайшего Monday (2 в weekday) до предыдущего дня.

+0

Я получаю сообщение об ошибке ** Типы данных datetime и int несовместимы в операторе modulo. ** – Dan171

+0

@ Dan171: Извините, отсутствует 1 '('. Edited. –

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