Как получить дату окончания недели указанной даты, возвращенную из выражения DateAdd - PullRequest
1 голос
/ 16 марта 2010

Не уверен, как взять мое текущее выражение и получить конечную дату недели недели.

Мое текущее выражение возвращает дату, одну неделю с сегодняшнего дня.

DateAdd(DateInterval.WeekOfYear, 1, today())

Что явместо этого я хочу вернуть дату окончания (субботу) этой недели.

Что мне нужно добавить к этому выражению, чтобы получить желаемый результат?

Спасибо!

Ладно, похоже, что я понял, но это ужасно.Может ли кто-нибудь помочь мне упростить это?

Вот что я имею, основываясь на превращении примера Радж в выражение:

= "Запланированное на одну неделю отставание w / e" & DateAdd (DateInterval.Day,-1 * DatePart (DateInterval.WeekDay, (DateAdd (DateInterval.WeekOfYear, 1, сегодня ()))) + 7, (DateAdd (DateInterval.WeekOfYear, 1, сегодня ())))

Ответы [ 2 ]

6 голосов
/ 16 марта 2010

Попробуйте это

Declare @DateValue DateTime = '3/1/2010'

select DATEADD (D, -1 * DatePart (DW, @DateValue) + 7, @DateValue)

Я в основном вычислил, какой день недели был после даты поступления, а затем мягко вычислил начало недели с множителем -1 и перешел в субботу, добавив к ней 7.

Конечно, это будет работать, только если для SQL Server установлена ​​неделя, начинающаяся с воскресенья

Для служб отчетов SQL Server, я думаю, это должно работать в субботу текущей недели

DATEADD (DateInterval.Day, -1 * DatePart (DateInterval.DayOfWeek, Today()) + 7, Today())

В субботу следующей недели

DATEADD (DateInterval.Day, -1 * DatePart (DateInterval.DayOfWeek, Today()) + 14, Today())
0 голосов
/ 29 января 2014

Как насчет?

select dateadd(ww,-2,'1-27-2014')+4
...