2013-05-13 50 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 2013-05-13 13:11:55

+0

嗨伊恩,不幸的是它不可能发送PN,所以这是唯一的方法来问你,你如何管理输入参数时间与默认格式HH:毫米。这是一个简单的文本框或日期/时间。 Thx in advanced - Frank – Frank 2013-12-07 23:03:26

+0

嗨,@Frank。在上面的问题/答案中,这只是一个“文本”参数;它只是由运行报告的用户编写的。对于OP来说,这似乎已经足够了。上面的表达式假设为'HH:mm'格式 - 如果不是那种格式,它只是错误。如果您的要求明显不同,那么跟进一个新问题可能会更好。 – 2013-12-08 22:42:54

相关问题