【问题标题】:Displaying Time in Reporting Services 2008在 Reporting Services 2008 中显示时间
【发布时间】:2010-10-02 15:33:02
【问题描述】:

我的报告中有一个表格,其中有数据类型为Time(7) 的列。

现在我在 Reporting Services 2008 中无法正确格式化它们。

如果我将表达式的格式设置为 HH:mm,它仍然会显示 11:12:000

我只想得到小时和分钟!喜欢11:12

看起来 RS 不知道格式。以下都不起作用:

=Hour(Fields!MyTime.Value)

=CDate(Fields!MyTime.Value)

两者都抛出错误。我认为它可以将其格式化为纯文本?

感谢您的帮助

编辑:

我使用 SQL Server 2008 R2 Express 作为数据库。 (所以我在报表中包含了 DataSource,因为 SQL Server Express 中的 Reporting Services 不允许使用共享 DataSource。)

解决方案(感谢 Mark Ba​​nnister):

=Today() + Fields!MyTime.Value

然后您可以使用用于日期时间值的通用格式!

【问题讨论】:

  • 您使用的是什么数据源(SQL/其他、SQL 方言、版本等)?

标签: reporting-services time reporting


【解决方案1】:

尝试在查询中将MyTime 替换为cast(MyTime as datetime) as MyTime,并将表达式的格式设置为HH:mm

【讨论】:

  • 如果我对这些时间值不做任何事情,问题就解决了。但是,当我对这些值进行加法或减法 2 时,我仍然会得到错误的格式,因为我猜带日期的数学会返回一个时间跨度......但是用 CDATE(mytime1 +mytime2) 进行转换不起作用。
  • mytime1+mytime2 无论如何都不应该是一个有效的表达式,因为它们都是时间值——我无法计算出你想用那个表达式实现什么。 mytime1-mytime2 会给你一个时间间隔作为两者之间的差异,除了我不认为 SQLServer 允许这样的日期时间算术 - 你必须改用 datediff 。我建议使用 SQLServer 中现有的日期/时间函数,例如 datepart 和 datediff。
  • 你误会了我。我对报告中的日期进行减法!我想添加 time1 + time2 并获取总时间并将其显示在报告中。这应该是可能的!
  • time1 + time2 在报告中确实有效 -> 但我丢失了正确的格式为 HH:mm!
  • @SwissCoder,听起来好像您将时间值视为持续时间 - 我的理解是它们实际上是时间戳(如日期时间戳,但没有日期元素)。
【解决方案2】:

尝试使用 FORMAT() 函数包装表达式。例如:

您有一个文本框,或一个包含时间值的数据网格/矩阵。将表达式编辑为:

format( (time1 -time2) + (time3 - time4) , "HH:mm")  

我经常将它与Datetime 一起使用以“切断”显示它的时间。

例子

format(dateVal,"MM/dd/yyyy") 

会显示

10/05/2010

这里有更多关于它的信息,可能会有所帮助:

http://msdn.microsoft.com/en-us/library/59bz1f0h(v=VS.90).aspx

【讨论】:

  • 嗨,斯科特,谢谢。但这不起作用......我认为在我从另一个日期时间中减去一个日期时间后,我得到一个时间跨度或时间偏移量......并且在尝试将其格式化为 HH:mm 时会以某种方式引发错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多