2014-01-27 4 views
0

Если я использую этот запрос он работает, потому что даты одинаковы:Как получить разницу между двумя переменными датами в SSRS

DECLARE @Start datetime 
    DECLARE @End datetime 
    DECLARE @ServerName varchar(128) 
    SET @Start = '2014-01-24' 
    SET @End = '2014-01-24' 
    SET @ServerName = 'ServerName' 

    SELECT ServerName, cntr_value, collection_datetime 
    FROM PLE 
    WHERE CONVERT(DATE, collection_datetime) = @Start 
    AND CONVERT(DATE, collection_datetime) = @End 
    AND ServerName = @ServerName 

Однако, я хочу использовать @start и @end как SSRS поэтому мне нужно просматривать данные с определенного диапазона дат, поэтому я бы подумал, что буду использовать что-то вроде ниже ... кроме того, что это не работает.

 DECLARE @Start datetime 
    DECLARE @End datetime 
    DECLARE @ServerName varchar(128) 
    SET @Start = '2014-01-24' 
    SET @End = '2014-01-27' 
    SET @ServerName = 'Server' 


    SELECT ServerName, cntr_value, collection_datetime 
    FROM PLE 
    WHERE CONVERT(DATE, collection_datetime) = @Start 
    BETWEEN CONVERT(DATE, collection_datetime) = @End 
    AND ServerName = @ServerName 

Очевидно, что я не могу использовать МЕЖДУ, но что еще я могу использовать для выполнения этой работы?

+1

Что случилось с 'WHERE CONVERT (ДАТА, collection_datetime) МЕЖДУ @start и @end' ? – StuartLC

+0

@StuartLC Проблема с этим подходом заключается в том, что он делает недействительным возможное использование индексов (индексов), которые OP может определять на 'collection_datetime', эффективно вызывая полное сканирование каждый раз – peterm

ответ

1

ли это в индекс безвредной пути

SELECT ServerName, cntr_value, collection_datetime 
    FROM PLE 
WHERE collection_datetime >= @Start 
    AND collection_datetime < DATEADD(DAY, 1, @End) 
    AND ServerName = @ServerName 

Примечание: При применении функции к колонке в WHERE пункте вы предотвратить Database Engine с использованием любых индексов (индексов) вы можете (и вам лучше делать) в этом столбце, эффективно вызывая полное сканирование.

Вот SQLFiddle демо

Рекомендуемая литература:

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