Если вы довольны ими в своих собственных колонках, вы можете сделать что-то подобное;
SELECT
DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0) Last_Monday
,DATEADD(WEEK, DATEDIFF(WEEK, 2, GETDATE()) - 1, 1) Last_Tuesday
,DATEADD(WEEK, DATEDIFF(WEEK, 2, GETDATE()) - 1, 2) Last_Wednesday
,DATEADD(WEEK, DATEDIFF(WEEK, 2, GETDATE()) - 1, 3) Last_Thursday
Результатж;
Last_Monday Last_Tuesday Last_Wednesday Last_Thursday
2016-11-14 00:00:00.000 2016-11-15 00:00:00.000 2016-11-16 00:00:00.000 2016-11-17 00:00:00.000
Если вам это нужно в строках, то просто соедините результат;
SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0) Date_Field, 'Last_Monday' Day_Name
UNION
SELECT DATEADD(WEEK, DATEDIFF(WEEK, 2, GETDATE()) - 1, 1), 'Last_Tuesday'
UNION
SELECT DATEADD(WEEK, DATEDIFF(WEEK, 2, GETDATE()) - 1, 2), 'Last_Wednesday'
UNION
SELECT DATEADD(WEEK, DATEDIFF(WEEK, 2, GETDATE()) - 1, 3), 'Last_Thursday'
Результат;
Date_Field Day_Name
2016-11-14 00:00:00.000 Last_Monday
2016-11-15 00:00:00.000 Last_Tuesday
2016-11-16 00:00:00.000 Last_Wednesday
2016-11-17 00:00:00.000 Last_Thursday
Прочтите здесь, чтобы получить хорошее объяснение того, как это работает;
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) Can someone explain me this
Пожалуйста, имейте в виду, что существует более одного определения для «недели». В зависимости от ваших потребностей, вы можете иметь это в виду. – Jens
Привет, Йенс. Что ты имеешь в виду? Если я смогу избежать будущих проблем, я захочу. – user3482471
В зависимости от региона способ изменения недели может измениться. В некоторых регионах неделя начинается в понедельник, другие - в воскресенье. Кроме того, обработка недель в год, эти реализации могут отличаться, особенно в начале и конце года. Неделя 1 не обязательно начинается с первого января, она даже может быть частью прошлогодней недели. Это довольно распространенная проблема с BI. – Jens