【问题标题】:How to convert separate date and time parameters to a valid datetime?如何将单独的日期和时间参数转换为有效的日期时间?
【发布时间】:2013-05-13 12:43:44
【问题描述】:

我有一份报告,其中包含单独的日期和时间(只有一个小时和分钟)参数。 Date 参数的类型为 Date/Time,Time 参数设置为 Text。我想将这两个值合并为一个,因为我想将最少数量的参数传递给存储过程。我试图以多种方式实现该目标,但 SSRS 每次尝试都会返回错误。

如果我尝试使用这样的表达方式:

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

SSRS 返回此错误:

将数据类型 nvarchar 转换为日期时间时出错。

当我尝试像这样使用Datetime.Parse 时:

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

SSRS 说:

查询参数“@startDate”的值表达式包含错误:字符串未被识别为有效的日期时间。从索引 0 开始有一个未知单词。

当我删除 FormatDateTime 函数时,我又遇到了另一个错误:

查询参数“@startDate”的值表达式包含错误:输入字符串格式不正确。

您对如何正确编写此表达式有任何想法吗?

PS。我使用 SSRS 2008 R2。

【问题讨论】:

    标签: reporting-services ssrs-2008 business-intelligence


    【解决方案1】:

    这对我有用:

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

    没有尝试对您的具体示例进行故障排除,但它们可能会遇到您未包括日期和时间之间的空格的问题。

    上面的表达方式可能适合你的报告;不知道它会在不同的语言环境中保持健壮。

    如果您需要更大的灵活性,也可以考虑在自定义代码中进行连接/转换。

    【讨论】:

    • 这正是我想要的。它解决了问题,现在我的报告工作了,谢谢!
    • 嗨,Ian,很遗憾,无法发送 pn,所以这是唯一的方法来询问您,您如何使用默认格式 HH:mm 管理输入参数时间。这是一个简单的文本字段还是日期/时间。 Thx 在高级 - 弗兰克
    • 嗨,@Frank。在上述问题/答案中,这只是一个Text 参数;它只是由运行报告的用户编写的。这对于 OP 来说似乎已经足够了。上面的表达式假定HH:mm 格式 - 如果不是这种格式,它只会出错。如果您的要求明显不同,最好跟进一个新问题。
    猜你喜欢
    • 2013-08-29
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多