Получить дату начала дня (например, понедельник) недели, если текущая дата случайного дня (например, пятница) в этой неделе - PullRequest
0 голосов
/ 16 августа 2011

Например, мой начальный день недели - понедельник (01.02.2011), когда пользовательский ввод (01.04.2011) среда, есть ли какие-то встроенные функции, которые могут помочь мне получить начальную датутекущей недели?

Спасибо.

Ответы [ 3 ]

1 голос
/ 16 августа 2011

Для этого нет встроенной функции,

Но вы можете использовать:

SELECT      DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0)
1 голос
/ 16 августа 2011
select getdate() - CAST(getdate()-.5 as int)%7

или

select cast(getdate() - CAST(getdate()-.5 as int)%7 as date)
1 голос
/ 16 августа 2011

Если параметр 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' появляется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...