2015-05-11 5 views
1

Часть моего запроса следующим образом:Форматирование Datetime в SSRS Expression

SELECT * FROM TableA 
    WHERE ColumnA >= DATEADD(DAY, - 30, GETDATE()) 

С выражением на где положение выше, вы можете тянуть прокатные 30 дни данных без необходимости вводить значение. Теперь пользователи отчета хотят видеть, что они представлены следующим образом:

2nd April – 1st May 

когда отчет запущен. Зная, что у меня нет параметров, поскольку требование состоит в том, чтобы не использовать параметры, как мне ссылаться на «> = DATEADD (DAY, - 30, GETDATE())», чтобы отразить дату начала и дату окончания в отчете?

+0

Возможный дубликат [Формат даты и времени дня й, й, й, е] (https: // stackoverflow.com/questions/32712572/format-datetime-day-with-st-nd-rd-th) –

ответ

4

SSRS не имеет встроенной поддержки порядковых номеров (то есть «1-й» или «2-й» вместо «1» или «2»). This page содержит специальный код для добавления этой функции в отчет SSRS; однако это немного неправильно. Вот исправленный вариант:

Public Function FormatOrdinal(ByVal day As Integer) as String 
     ' Starts a select case based on the odd/even of num 
     if(day = 11 or day = 12 or day = 13) 

     ' If the nymber is 11,12 or 13 .. we want to add a "th" NOT a "st", "nd" or "rd" 
      return day.ToString() + "th" 


     else 
    ' Start a new select case for the rest of the numbers 
    Select Case day Mod 10 
     Case 1 
      ' The number is either 1 or 21 .. add a "st" 
      Return day.ToString() + "st" 
     Case 2 
      ' The number is either a 2 or 22 .. add a "nd" 
      Return day.ToString() + "nd" 
     Case 3 
      ' The number is either a 3 or 33 .. add a "rd" 
      Return day.ToString() + "rd" 
     Case Else 
      ' Otherwise for everything else add a "Th" 
      Return day.ToString() + "th" 
    End Select 
     end if 
End Function 

Если добавить этот код в секции кода вашего отчета в свойствах отчета, ваше выражение текстовое поле будет:

Code.FormatOrdinal(Day(Globals!ExecutionTime)) & " " & MonthName(Month(Globals!ExecutionTime), False) & " - " & Code.FormatOrdinal(Day(DateAdd("d", -30,Globals!ExecutionTime))) & " " & MonthName(Month(DateAdd("d", -30,Globals!ExecutionTime)), False) 

0

Щелкните правой кнопкой мыши на затем нажмите Number tab, нажмите на custom format, затем нажмите кнопку fx в черном.

Запись только одна строка кода будет делать свою работу более простым способом:

форма откроется, скопируйте приведенный ниже текст и вставить туда нужно изменить следующий текст с вашей датой полем базы данных.

Fields! FieldName.Value, "Dataset"

  1. Заменить FieldName с полем даты
  2. Заменить Dataset с Dateset Имя

    = "d" + переключатель (int (Day ((Fields! FieldName.Value, «Dataset»))) mod 10 = 2, "'nd'", int (День ((Fields! FieldName.Value, "Dataset"))) mod 10 = 3, " 'е'", правда, " 'й'") + "MMMM, гггг"

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