Службы Reporting Services удаляют время из DateTime в выражении


Я пытаюсь заполнить выражение (значение по умолчанию параметра) с явным временем. Как удалить время из функции "сейчас"?

14 55

14 ответов:

что-то вроде этого:

=FormatDateTime(Now, DateFormat.ShortDate) 

где "сейчас" может быть заменено именем поля даты/времени, которое вы пытаетесь преобразовать.)
Например,

=FormatDateTime(Fields!StartDate.Value, DateFormat.ShortDate)

поскольку SSRS использует VB, вы можете сделать следующее:

=Today() 'returns date only

Если бы вы использовали:

=Now() 'returns date and current timestamp
=CDate(Now).ToString("dd/MM/yyyy")

хотя вы жестко кодируете формарт даты в локаль.

Если вам нужно отобразить поле в заголовке отчета, попробуйте это... Щелкните правой кнопкой мыши на текстовое поле > свойства > категория > дата > выберите *Формат (обратите внимание, что это будет поддерживать региональные настройки).

Так как этот вопрос был просмотрен много раз, я отправляю его... Надеюсь, это поможет.

enter image description here

просто использовать DateValue(Now) Если вы хотите, чтобы результат был DateTime тип данных.

если ожидаемый формат данных MM-dd-yyyy тогда попробуйте ниже,

=CDate(Now).ToString("MM-dd-yyyy")

так же вы можете попробовать это одно,

=Format(Today(),"MM-dd-yyyy") 

выход:02-04-2016

Примечание:
Now() покажет сейчас и времени

Today() покажет вам дата только не время.

также вы можете задать любой формат даты вместо MM-dd-yyyy в моем примере.

в свойстве format любого поля текстового поля можно использовать формат строки:

например D/M / Y, D, etc.

одна вещь, которая может помочь другим является то, что вы можете разместить: =CDate(Now).ToString("dd/MM/yyyy") в свойстве Format String SSRS, которое можно получить, щелкнув правой кнопкой мыши столбец. Что самый чистый способ сделать это. Тогда ваше выражение не будет слишком большим и сложно "разобрать" :)

    FormatDateTime(Parameter.StartDate.Value)

Я опаздываю в игре, но я пробовал все решения выше! не удалось заставить его отбросить нули в параметре и дать мне значение по умолчанию (он игнорировал форматирование или казался пустым). Я использовал SSRS 2005, поэтому боролся с его неуклюжими / багги-проблемами.

мой обходной путь состоял в том, чтобы добавить столбец в пользовательскую таблицу [DimDate] в моей базе данных, из которой я вытаскивал даты. Я добавил столбец, который был строковым представлением в желаемом формате столбца [date]. Я тогда создал 2 новых набора данных в SSRS, которые вытащили следующие запросы для 2 значений по умолчанию для моих " To " & "From" date defaults -

"С"

    SELECT  Datestring
    FROM    dbo.dimDate
    WHERE   [date] = ( SELECT   MAX(date)
                       FROM     dbo.dimdate
                       WHERE    date < DATEADD(month, -3, GETDATE()
                     )

'to'

    SELECT  Datestring
    FROM    dbo.dimDate
    WHERE   [date] = ( SELECT   MAX(date)
                       FROM     dbo.dimdate
                       WHERE    date <= GETDATE()
                     )

мое решение для параметра даты / времени:

=CDate(Today())

трюк состоит в том, чтобы преобразовать обратно в DateTime, как рекомендуют Perhentian.

нашел решение от здесь

это получает последнюю секунду предыдущего дня:

DateAdd("s",-1,DateAdd("d",1,Today())

это возвращает последнюю секунду предыдущей недели:

=dateadd("d", -Weekday(Now), (DateAdd("s",-1,DateAdd("d",1,Today()))))

просто соедините строку до конца значения:

Fields!<your field>.Value & " " 'test' 

и это должно работать!

Это должно быть сделано в наборе данных. Г