Необходимо получить данные на основе даты начала - PullRequest
2 голосов
/ 08 декабря 2011

Я пытаюсь получить данные на основе ввода даты начала. Если пользователь выбирает начальную дату 11-27-2011, а конечную дату - 12/04/2011, то возвращенная дата для моего набора данных будет за весь ноябрьский месяц. Если они выберут дату начала 10/01/2011, тогда мой набор данных вернет данные с 1 января по текущую дату.

Мне удалось заставить работать 2-й / 3-й операторы, но когда я пытаюсь добавить фильтр для извлечения данных с 1 января, он выдает ошибку (первый оператор IF в запросе). Первый оператор IF проверяет, меньше ли @BeginningDate, чем месяцем ранее. Если это ТО, он должен получить данные о годах, иначе это будет продолжаться оттуда. Вот мой запрос на даты:

Declare @startdate  datetime
Declare @enddate  datetime
Declare @BeginningDate datetime

set @BeginningDate = '12-01-2011'

IF Month(@BeginningDate) < (Month(GETDATE())-1)
BEGIN
set @startdate = DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
set @enddate = dateadd(day, datediff(day, 0, getdate()), 0)
END

IF Month(@BeginningDate) = (Month(GETDATE())-1)
BEGIN
set @startdate = dateadd (mm,-1,DATEADD(dd,-(DAY(DATEADD(mm,1,convert(varchar(10),getdate(),111)))-1),DATEADD(mm,0,convert(varchar(10),getdate(),111))))--BEGINNING OF PRIOR MONTH
set @enddate =DATEADD(dd,-1,DATEADD(mm, DATEDIFF(m,0,convert(varchar(10),getdate(),111)),0))--END OF PRIOR MONTH
END

ELSE
IF Month(@BeginningDate) = (Month(GETDATE())
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

Как я уже говорил, мне удается заставить запрос работать с двумя операторами, но когда я добавил первый IF, а затем проанализировал его, я получил следующее сообщение:

error message

Строка 15 - «НАЧАЛО» в последнем утверждении ELSE. Я пытаюсь сделать слишком много утверждений IF / ELSE? Мне никогда не приходилось делать это раньше, насколько это много параметров даты, а также использовать их в IF / ELSE.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Похоже, что линия IF Month(@BeginningDate) = (Month(GETDATE()) отсутствует a)

изменить это на

IF Month(@BeginningDate) = (Month(GETDATE())) и посмотрите, работает ли он сейчас

1 голос
/ 08 декабря 2011

Я считаю, что ваши скобки не совпадают - в вашем последнем блоке попробуйте

IF Month(@BeginningDate) = (Month(GETDATE()))

или

IF Month(@BeginningDate) = Month(GETDATE())

вместо финала

IF Month(@BeginningDate) = (Month(GETDATE())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...