MTD настройки SQL на основе даты окончания - PullRequest
1 голос
/ 13 марта 2012

Я хотел убедиться, что все делаю правильно.В этом разделе моего отчета по умолчанию установлен текущий MTD.Что мне нужно сделать, это установить отчет в MTD, если пользователь меняет дату окончания select date

Проблема, с которой я столкнулся, заключалась в использовании IF Month(@EndingDate) для проверки даты, и если она не была текущеймесяц, затем используйте конечную дату и затем вернитесь к началу месяца.До 2011 года он работал нормально. Поэтому я изменил свой код на это, используя IF Year(@EndingDate):

Declare @startdate  datetime
Declare @enddate  datetime
--Declare @EndingDate datetime


--set @EndingDate = '11-15-2011'

IF Year(@EndingDate) = DATEADD(year,DATEDIFF(year,0, @EndingDate),0)
BEGIN
set @startdate = dateadd(month, datediff(month, 0, dateadd(day, datediff(day, 1,    getdate()), 0)), 0)--BEGINNING OF CURRENT MONTH
set @enddate = dateadd(day, datediff(day, 0, getdate()), 0)--THROUGH CURRENT MONTH (TODAY)
END

ELSE
IF Year(@EndingDate) < DATEADD(year, DATEDIFF(year, 0, GetDate())+1, 0)-1
BEGIN
set @startdate = dateadd(m,datediff(m,0, @EndingDate),0)--Beginning of Month from @Enddate
set @enddate = @EndingDate 
END

Так что, как вы можете видеть, я переключил его, чтобы проверить, совпадает ли год даты окончанияв этом году или нет, а затем получить данные на основе этого.

Это логичный способ сделать это?Моя проблема сейчас в том, что за текущий год я получаю все правильные данные, но когда я возвращаюсь к прошлому году, я пропускаю данные по определенным заводам.Я проверил другой отчет, и для каждого завода должны быть данные, поэтому я хотел убедиться, что у меня правильно настроено сравнение дат.

1 Ответ

1 голос
/ 13 марта 2012

Я не совсем уверен, что именно вы пытаетесь сделать здесь, но я думаю, что изменение дат за кулисами может быть обманчивым для пользователей и может вызвать дополнительные головные боли в будущем.Вы должны просто получить данные за выбранные даты.Вы можете легко установить дату по умолчанию для начала месяца в отчете RS, используя выражение ниже.Таким образом, пользователи видят то, что они ожидают, вместо даты, которая создается за кулисами.

Дата начала месяца

=Now.AddDays(-Today().Day + 1).Date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...