SQL / SSRS выбирает первый день недели или ранее - PullRequest
0 голосов
/ 31 мая 2011

Здравствуйте. Я преобразовал электронную таблицу в отчет SSRS, который запускается 20-го числа месяца, и мне нужно передать 20-е число текущего месяца в качестве значения по умолчанию (дата начала) либо через пользовательское выражение, либо через набор данных. Если 20 числа приходится на субботу, по умолчанию пятница 19 числа. Если 20-е число падает в воскресенье, по умолчанию на пятницу 18-е. Как мне это сделать и как лучше всего это сделать?

Ответы [ 3 ]

2 голосов
/ 31 мая 2011

Как насчет этого:

DECLARE @daytwenty date;
SET @daytwenty = DATEADD(mm, DATEDIFF(mm, 0, getdate()) ,19) --Get Twentieth Day of current month

SELECT 
      CASE DATEPART(DW,@daytwenty)
         WHEN 1 THEN DATEADD(dd, -2, @daytwenty) --When the twentieth day is a Sunday, take two days off
         WHEN 7 THEN DATEADD(dd, -1, @daytwenty) --When the twentieth day is a Saturday, take one day off
         ELSE @daytwenty --Else the twentieth day is a weekday already
      END
0 голосов
/ 31 мая 2011

Вы должны использовать Datetime для версии 2008. Написав

DECLARE @LatestDate date;

в предыдущей версии Sql Server выдает ошибку компиляции.

Column, parameter, or variable #1: Cannot find data type date.

Ниже приведен код Сервер SQL 2008

DECLARE @LatestDate datetime;
SET @LatestDate = DATEADD(mm, DATEDIFF(mm, 0, getdate()) ,19) --Get Twentieth Day of current month

SELECT 
      CASE DATEPART(DW,@LatestDate)
         WHEN 1 THEN DATEADD(dd, -2, @LatestDate) --When the twentieth day is a Sunday, take two days off
         WHEN 7 THEN DATEADD(dd, -1, @LatestDate) --When the twentieth day is a Saturday, take one day off
         ELSE @LatestDate --Else the twentieth day is a weekday already
      END
0 голосов
/ 31 мая 2011

Надеюсь, это то, чего ты хочешь,

 select case datename(dw, getdate())
 when 'Monday' then 'Friday'
 when 'Tuesday' then 'Monday'
 when 'Wednesday' then 'Tuesday'
 when 'Thursday' then 'Wednesday'
 when 'Friday' then 'Thursday'
 when 'Saturday' then 'Friday'
 when 'Sunday' then 'Friday'
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...