2016-09-24 2 views
1

У меня есть сценарий, который я обновляю каждую неделю, чтобы получить данные о продажах прошлой недели с продолжительностью, начиная с воскресенья прошлой недели и заканчивая субботой недели. Например, если я запускаю скрипт в любой день недели с 09/18/16 по 09/24/16, я хочу получить данные о продажах, начиная с 09.11.16 по 09.17.16.microsoft SQL - возвращает данные предыдущей недели

Какой сценарий/синтаксис можно использовать для получения этих данных, если я хочу обновить в любой день текущей недели, чтобы получить данные за предыдущую неделю?

Цените свое время,

Спасибо!

+0

Она работала через совет Хади в - когда я положил заявление таким образом: где [Продажи Дата] между dateadd (wk, -1, dateadd (dd, - (datepart (dw, @date) -1), @date)) и dateadd (wk, -1, dateadd (dd, 7- (datepart (dw, @date)), @date)) –

ответ

1

Вы можете попробовать следующий

declare @date date = getdate() 
select dateadd(wk,-1,dateadd(dd, -(datepart(dw, @date)-1), @date)) as [Start], 
     dateadd(wk,-1,dateadd(dd, 7-(datepart(dw, @date)), @date)) as [End] 

Здесь рабочего demo

Надеется, что это поможет вам

+0

Большое спасибо Хади. Я попытался - он работает, но он дает мне намного больше строк, чем если бы я вручную определял время. Mt-скрипт очень длинный, у него также есть группа, мне нужно добавить то же самое заявление в группу? Или, может быть, я не должен вставлять этот оператор в select, но после того, где предложение? Также есть столбец для записи дат, называемых «датой продажи» - если я хочу указать через этот столбец временные рамки - должен ли я просто писать - где «дата продажи» и это заявление? –

+0

Он работал, когда я писал так: Где [Дата продажи] между dateadd (wk, -1, dateadd (dd, - (datepart (dw, @date) -1), @date)) и dateadd (wk, -1 , dateadd (dd, 7- (datepart (dw, @date)), @date) –

+0

Просто сейчас - спасибо! –

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