найти день начала (понедельник) текущей недели - PullRequest
10 голосов
/ 14 октября 2010

Поиск запроса / запросов SQL, которые бы определяли день начала (понедельник) текущей недели.

Пример: если сегодня ->, то начало недели -

Sat Oct 09, 2010 -> Start of the week is Monday Oct 04, 2010
Sun Oct 10, 2010 -> Start of the week is Monday Oct 04, 2010
Mon Oct 11, 2010 -> Start of the week is Monday Oct 11, 2010
Tue Oct 12, 2010 -> Start of the week is Monday Oct 11, 2010

Я видел много «решений» в Google и StackOverflow.Выглядит примерно так:

SET @pInputDate = CONVERT(VARCHAR(10), @pInputDate, 111)
SELECT DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate)

Это не удается, потому что: вс 10 октября 2010 -> начало недели понедельник 11 октября 2010 года (что неверно).

Ответы [ 2 ]

17 голосов
/ 14 октября 2010

Попробуйте использовать DATEFIRST, чтобы явно установить день недели, который будет считаться первым

set DATEFIRST 1  --Monday
select DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate)

Возвращает понедельник недели, в которую попадает InputDate.

1 голос
/ 06 августа 2018

Основываясь на решении p.campbell, если вы не хотите использовать или не можете использовать «SET DATEFIRST 1», вы можете обойти это, выполнив следующие действия:

SELECT DATEADD(DD, 2 - DATEPART(DW, DATEADD(DD, -1, @pInputDate)), DATEADD(DD, -1, @pInputDate))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...