У меня есть отчет с параметрами даты и времени (всего лишь час и минуты), которые являются отдельными. Параметр 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.
Это именно то, что я искал. Это решило проблему, и теперь мой отчет работает, спасибо! – tkestowicz
Привет, Ian, к сожалению, невозможно отправить pn, так что это единственный способ спросить вас, как вы управляете временем входного параметра со стандартным форматом HH: mm. Это простое текстовое поле или дата/время. Thx in advanced - Frank – Frank
Привет, @Frank. В приведенном выше вопросе/ответе это просто параметр «Текст»; он просто закодирован пользователем, выполняющим отчет. Этого оказалось достаточно для ОП. Вышеприведенное выражение предполагает формат «HH: mm' - это просто ошибка, если не в этом формате. Если ваши требования существенно отличаются друг от друга, лучше будет ответить на новый вопрос. –