Я хотел убедиться, что все делаю правильно.В этом разделе моего отчета по умолчанию установлен текущий MTD.Что мне нужно сделать, это установить отчет в MTD, если пользователь меняет дату окончания
Проблема, с которой я столкнулся, заключалась в использовании 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
Так что, как вы можете видеть, я переключил его, чтобы проверить, совпадает ли год даты окончанияв этом году или нет, а затем получить данные на основе этого.
Это логичный способ сделать это?Моя проблема сейчас в том, что за текущий год я получаю все правильные данные, но когда я возвращаюсь к прошлому году, я пропускаю данные по определенным заводам.Я проверил другой отчет, и для каждого завода должны быть данные, поэтому я хотел убедиться, что у меня правильно настроено сравнение дат.