Параметр время / дата между в службах reporting services

#sql-server #sql-server-2008 #stored-procedures #reporting-services #ssrs-2008

#sql-сервер #sql-server-2008 #хранимые процедуры #службы reporting-services #ssrs-2008

Вопрос:

Я хотел бы определить 2 параметра в службах reporting services

  1. для выбора даты между 2 датами (в идеале, 2 календарями)
  2. чтобы выбрать время, у меня есть 3 необходимых диапазона (08:00:00-15:59:59, 16:00:00-23:59:59, 00:00:00-07:59:59) В идеале 3 кнопки.

Есть идеи?

Ответ №1:

Я бы использовал три параметра:

  1. FromDate с запросом «From:», тип DateTime.
  2. Завершать с запросом типа DateTime «кому:».
  3. Изменение времени с запросом «Times:» Тип Int с тремя жестко заданными параметрами:

Возможное значение для TimeRange:

 Value  Label
1      0 - 8
2      8 - 16
3      16 - 0
  

Обратите внимание, что вы можете установить метки на любые, которые помогут вашим пользователям: «Ранняя смена (с полуночи до 8 утра)»

Затем в вашем SQL введите параметр TimeRange в качестве int и преобразуйте его в два параметра для вашего SQL.

 DECLARE @StartHour INT
DECLARE @EndHour INT

SET @StartHour = CASE @TimeRange WHEN 1 THEN 0
                                 WHEN 2 THEN 8
                                 WHEN 3 THEN 16
                 END

SET @EndHour = CASE @TimeRange   WHEN 1 THEN 8
                                 WHEN 2 THEN 16
                                 WHEN 3 THEN 24
                 END


SELECT
   *
FROM
   LogEntries
WHERE
   LogEntries.TimeOfEntry >= @FromDate
   AND LogEntries.TimeOfEntry < @ToDate
   AND DATEPART( hh , LogEntries.TimeOfEntry ) >= @StartHour
   AND DATEPART( hh , LogEntries.TimeOfEntry ) < @EndHour
  

(Не используйте BETWEEN, если вы используете мой точный код, он не будет соответствующим образом обрабатывать время окончания.)