Как отобразить значение времени в заданном строковом формате в отчете SSRS?

#datetime #time #format #ssrs-2008 #reporting-services

#datetime #время #формат #ssrs-2008 #отчеты-службы

Вопрос:

Я хочу отобразить продолжительность времени в отчете SSRS, моим полем базы данных является время в SQL. Он преобразует промежуток времени в SSRS.

формат: 13:00 — 15:50

Как я могу это сделать?

 Fields!StartTime.Value.ToString()   " PM - "    
       Fields!EndTime.Value.ToString()   " PM" is not working..
  

Ответ №1:

Вот один из возможных способов достижения этого с помощью Custom code в SSRS. Следующий пример не вдается в подробности создания отчетов SSRS, но должен дать представление о том, как форматирование времени может быть достигнуто в SSRS.

Пошаговый процесс:

  1. Создайте таблицу с именем dbo.Timespans , используя скрипт, предоставленный в разделе SQL Scripts. Заполните его некоторыми данными, как показано на скриншоте # 1.

  2. Создайте отчет SSRS и используйте таблицу dbo.Timespans в качестве источника данных. Смотрите скриншот # 2.

  3. Нажмите на Report меню и выберите Report Properties . Выберите Code вкладку в левой части.

  4. Вставьте код, указанный в разделе Пользовательский код SSRS, в текстовое поле Пользовательский код. Нажмите OK. Этот код принимает timeSpan значение и format строку. Затем данные о времени будут отформатированы и возвращены в виде строки. Смотрите скриншот # 3.

  5. Щелкните правой кнопкой мыши по столбцу времени и выберите Expression... Вставить выражение =Code.FormatTimeSpan(Fields!StartTime.Value, "hh:mm tt") " - "
    Code.FormatTimeSpan(Fields!EndTime.Value, "hh:mm tt")
    в Set expression for: Value текстовое поле. Смотрите скриншоты # 4 и #5.

  6. На скриншоте # 6 показано выполнение отчета.

Надеюсь, это поможет.

Сценарии SQL:

 CREATE TABLE [dbo].[Timespans](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [StartTime] [time](7) NULL,
    [EndTime] [time](7) NULL,
CONSTRAINT [PK_Timespans] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO
  

Пользовательский код SSRS:

 public function FormatTimeSpan(timeSpanValue as TimeSpan, format as string) as string
    Dim dateValue as DateTime
    dateValue = new DateTime(timeSpanValue.Ticks)
    return dateValue.ToString(format)
end function
  

Скриншот # 1:

1

Скриншот # 2:

2

Скриншот # 3:

3

Скриншот # 4:

4

Скриншот # 5:

5

Скриншот # 6:

6