Если параметр SQL Server DATEFIRST
соответствует вашему представлению о выравнивании недель (возможно, это имеет значение только для суббот, воскресений и т. Д.), То пара DATEADD / DATEDIFF из произвольного понедельника должна дать желаемый результат.:
select DATEADD(week,DATEDIFF(week,'20110103',CURRENT_TIMESTAMP),'20110103')
Где CURRENT_TIMESTAMP
явно выбирает сегодняшнюю дату.Если бы вы выбирали из таблицы (Tab
) со столбцом с именем RandomDate
, вы могли бы сделать:
select DATEADD(week,DATEDIFF(week,'20110103',RandomDate),'20110103') as MondayDate
from Tab
Но ваш пример меня смущает, поскольку ни 2 январяни 1 февраля (обычные возможности устного перевода для «1/1/2011») - понедельник.Случайный понедельник, который я выбрал, был '20110103'
- так что если вместо этого вам нужно было найти пятницу для определенной даты, вы бы использовали '20110107'
в обоих местах, где '20110103'
появляется