2013-08-09 2 views
3

Я использую SSRS 2008r2 для создания отчетов. Используя следующий ИНЕК в SQL запросеSQL между двумя датами Отсутствует конечная дата (SSRS)

WHERE (NonPMJobs.npmJobCreateDate >= @Created_Parameter) AND  
     (NonPMJobs.npmJobCreateDate <= @Created_Parameter2) 

Я использую параметры с типом данными DateTime. Затем пользователи выбирают день из календаря. Я хочу получить результаты, где были созданы рабочие места между датой 1 (@Created_Parameter) И датой 2 (@Created_Parameter2) ВКЛЮЧЕН.

Но результаты, возвращаемые, не включают вторую дату (@Created_Parameter2). Если я выберу 01/07/2013 - 05/07/2013, я получаю 01, 02, 03, 04, но не 05. Если я выберу 01/07/2013 - 06/07/2013, я получаю 01, 02, 03, 04, 05.

У меня есть попытался использовать:

WHERE (NonPMJobs.npmJobCreateDate BETWEEN @Created_Parameter AND @Created_Parameter2) 

, но получить одинаковые результаты.

Что мне здесь не хватает и почему нет WHERE заявление включено? Любые указатели были бы очень оценены.

ответ

6

Ну, вы должны думать об этом: а DATETIME так: 05/07/2013 означает, 5 июля (или 7-го мая - в зависимости от вашего местонахождения) в полночь, когда день начинается (а 00:00 часов, так сказать).

Так что это NOT включают события, которые происходят в этот день!

Наилучшим решением было бы использовать

WHERE (NonPMJobs.npmJobCreateDate >= @Created_Parameter) AND  
     (NonPMJobs.npmJobCreateDate < DATEADD(DAY, 1, @Created_Parameter2)) 

и в основном получаю всё, что меньше, чем следующий день на основе @Created_Parameter2. Так что для вашего 5 июля это было бы что-то до 6 июля - которое включает все событий с 5 июля.

+0

Genius. Спасибо. Я даже не считал 00:00. Сменили заявление, и оно работает. Спасибо за помощь. – user1022772

Смежные вопросы