2014-01-24 5 views
4

Как получить первый день недели и последний день недели, когда мы вводим какой-либо один день недели?Как получить первый день недели и последний день недели в SQL Server 2008?

Например, если мы вводим дату, тогда должен отображаться первый (понедельник) и последний (пятничный) день. , то есть, если мы вводим 24-ян-2014, тогда должны отображаться 20-ян-2014 и 24-ян-2014.

С уважением

+0

Возможно, это Q может помочь: http://stackoverflow.com/questions/7168874/get-first-day-of-week-in-sql-server – Amber

+0

И этот: http://stackoverflow.com/questions/ 1110998/get-day-of-week-in-sql-2005-2008 – Jamiec

+2

Что нужно вернуть за 25-й-2014? – dnoeth

ответ

11

Вот как вы можете это сделать:

DECLARE @yourdate date = getdate() 
Select dateadd(ww, datediff(ww, 0, @yourdate), 0) 
Select dateadd(ww, datediff(ww, 0, @yourdate), 4) 

Вы устанавливаете @yourdate на желаемую дату. Первый ВЫБРАТЬ даст вам первый день и второй SELECT, даст вам последнюю дату

+0

Ваши 4 должны измениться на 7, чтобы получить 7-й день недели – Pierre

+4

@Pierre Я думаю, что он имел в виду рабочую неделю, а не обычную неделю. Хотя, если бы он имел в виду обычную неделю, вам нужно было бы изменить его на 6, чтобы получить воскресенье. – Niklas

+0

Да, я согласен с тобой! :) – Pierre

1

Попробуйте

SELECT DATEADD(wk, DATEDIFF(wk, 6, '5/13/2005'), 6) 
SELECT DATEADD(wk, DATEDIFF(wk, 5, '5/13/2005'), 5) 

(или)

Declare @Date datetime 
Det @Date = '2012-04-12' 
Delect @Date - DATEPART(dw, @Date) + 1 FirstDateOfWeek, 
     @Date + (7 - DATEPART(dw, @Date)) LastDateOfWeek 
1

Это решает его, а также обертывания около года заканчивается:

ВЫБЕРИТЕ ДАТАДД (wk, DATEDIFF (d, 0, '01 January 2017 ')/7, 0)

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