2013-05-13 3 views
2

У меня есть отчет с параметрами даты и времени (всего лишь час и минуты), которые являются отдельными. Параметр Date имеет тип Date/Time, а параметр Time - Text. Я хочу объединить эти два значения в один, потому что я хочу передать минимальное количество аргументов хранимой процедуре. Я пытался достичь этой цели разными способами, но SSRS возвращает ошибку для каждой попытки.Как конвертировать отдельные параметры даты и времени в действительное время?

Если я пытаюсь использовать выражение как это:

=Format(FormatDateTime(Parameters!startDate.Value, DateFormat.ShortDate).ToString() + Parameters!startTime.Value, "dd/MM/yyyy HH:mm") 

SSRS возвращает эту ошибку:

Error conterting data type nvarchar to datetime.

И когда я пытался использовать Datetime.Parse так:

=DateTime.Parse(Format(FormatDateTime(Parameters!startDate.Value, DateFormat.ShortDate).ToString() + Parameters!startTime.Value, "dd/MM/yyyy HH:mm")) 

SSRS сказал:

The Value expression for the query parameter '@startDate' contains an error: The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.

Когда я убрал функцию FormatDateTime я получаю еще одну ошибку:

The Value expression for the query parameter '@startDate' contains an error: Input string was not in a correct format.

У вас есть какие-либо идеи, как писать это выражение правильно?

PS. Я использую SSRS 2008 R2.

ответ

3

Это работает для меня:

=CDate(Format(Parameters!Date.Value, "yyyy-MM-dd") + " " + Parameters!Time.Value) 

enter image description here

enter image description here

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

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

Вы также можете рассмотреть возможность конкатенации/преобразования в пользовательском коде, если вам нужна большая гибкость.

+0

Это именно то, что я искал. Это решило проблему, и теперь мой отчет работает, спасибо! – tkestowicz

+0

Привет, Ian, к сожалению, невозможно отправить pn, так что это единственный способ спросить вас, как вы управляете временем входного параметра со стандартным форматом HH: mm. Это простое текстовое поле или дата/время. Thx in advanced - Frank – Frank

+0

Привет, @Frank. В приведенном выше вопросе/ответе это просто параметр «Текст»; он просто закодирован пользователем, выполняющим отчет. Этого оказалось достаточно для ОП. Вышеприведенное выражение предполагает формат «HH: mm' - это просто ошибка, если не в этом формате. Если ваши требования существенно отличаются друг от друга, лучше будет ответить на новый вопрос. –

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