【问题标题】:SSRS - Remove seconds from Time fieldSSRS - 从时间字段中删除秒
【发布时间】:2013-07-24 13:35:00
【问题描述】:

如何从时间字段中删除秒数? 我试过了:

=Rset(Fields!hr_saida.Value,5) = return #Error
=TimeValue(Fields!hr_saida.Value) = return #Error
=FormatDateTime(CDate(Fields!hr_saida.Value),"hh:mm") = return #Error

我还尝试将我的文本框属性设置为 Number > 13:30,但仍显示“hh:mm:ss” 如何删除?谢谢。

【问题讨论】:

    标签: reporting-services expression rdl


    【解决方案1】:

    除了@Yuriy 的选项之外的另一个选项是:

    =Format(Fields!hr_saida.Value, "HH:mm")
    

    24 小时制

    或:

    =Format(Fields!hr_saida.Value, "hh:mm")
    

    上午/下午。

    如果您的字段不是 DateTime,您可能还需要使用 CDate()

    评论后编辑

    试试:

    =Left(Fields!hr_saida.Value.ToString(), 5)
    

    RSet 也适用于ToString

    这适用于 24 小时 - 你可以使用类似的东西:

    =CDate(Fields!hr_saida.Value.ToString()).ToString("hh:mm")
    

    上午/下午。

    在我的测试中,我遇到了类似的错误:

    Unable to cast object of type 'System.TimeSpan' to type 'System.IConvertible'.
    

    从类型“TimeSpan”到类型“Date”的转换无效。

    我猜这里的结论是 SSRS 真的不喜欢 SQL Server 时间数据类型。

    【讨论】:

    • 如果字段实际包含日期时间值,则使用文本框的格式属性(设置为“HH:mm”),以便导出将保留该值。
    • @JamieF,一如既往的有用评论!仅显示可能是最佳解决方案的值;实际使用 Format 在使用该值附加到更大的字符串时最有用。
    • 我的字段是 Time(7),我在 CDate() 之前尝试过,但仍然得到同样的错误
    • @JamieF 也许我做错了什么,对此我很抱歉,但返回的是“hh:mm:ss”
    • 谢谢@IanPreston!最后一个表达效果很好!
    【解决方案2】:

    FormatDateTime 函数使用4 选项。

    =FormatDateTime(Fields!hr_saida.Value, 4)
    

    应该做的伎俩。

    【讨论】:

    • 仍然返回“#Error”
    • Fields!hr_saida.Value 是什么类型?如果你简单地输出 =Fields!hr_saida.Value, 会发生什么?
    • 我得到“hh:mm:ss”,类型是“time(7)”
    • 请在下面的评论中尝试@JammieF的方法 - 设置实际文本框的格式
    【解决方案3】:

    我无法无误地返回我想要的东西。我已经将日期时间字段转换为时间,所以我只是抓住了左边的 5 个字符(在 SQL 查询中)来修剪秒数。不优雅,但完成了工作。

    所以我的表中的EndTime 是一个日期时间数据类型,其值类似于2020-03-30 09:34:00.000。 我所需要的只是没有几秒钟的时间,所以:

    left(cast(EndTime as time),5) [End]
    

    这已将报告列输出(如 09:34:00 更改为 09:34),这正是我所需要的。

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      相关资源
      最近更新 更多