SSRS / SQL Server - 如何从时间格式中删除秒?

时间:2013-07-11 17:39:47

标签: sql-server reporting-services

从HH:mm上传到HH:mm:ss时,SQL服务器上我的一个表中的时间列格式发生了变化。首先,有没有办法阻止这种转换?其次,既然它是那种格式,我怎么能把它显示为HH:mm?我尝试了以下方法无济于事:

  • 将自定义文本框格式设置为HH:mm
  • 将文本框中的时间格式设置为短时间即。下午1:30
  • 将文本框值设置为表达式= LEFT(Fields!Time.Value,5)
  • 将文本框值设置为表达式= LEFT(Fields!Time.Value,Len(Fields!Time.Value)-3)

前两次格式化尝试仍返回HH:mm:ss并使用Left函数返回#Error。

为什么会发生这种情况以及如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:3)

有两种方法,具体取决于您在报告中设置字段的方式。您要做的第一件事是在报表生成器中加载报表。

首先,我想确保您可以看到属性窗格,因此在功能区的“视图”选项卡组下,确保将“属性”窗格设置为可见:

View tab group showing check boxes for Report Builder panes

在文本框中格式化字段/表达式值

如果该字段位于包含多个表达式的文本框中,如此,其中[DateTimeField]是数据集中的实际字段:

Image of a text box with the text "Time:" and a field named DateTimeField

然后您将选择字段项本身:

Selection of the field named DateTimeField

然后,在属性窗格中,您应该看到“格式”设置。将格式设置为“hh:mm”,如下所示:

The report builder window showing the format property of the field DateTimeField

格式化整个文本框

如果报表生成器中的字段如下所示,则可以在整个文本框中设置格式:

Image of a cell in the report containing only a single field or expression

选择文本框或单元格:

The cell selected

在属性窗格中,您可以将Format属性设置为“hh:mm”,以便在项目上获得所需的格式:

Report builder window showing the properties pane and the Format property set

如果一切都失败

将数据转换为您知道的报表生成器可以格式化的数据类型,例如日期类型,然后在那里格式化。为此,您需要右键单击相关字段并选择“表达式”:

Context menu of right clicking on the DateTimeField field and showing the Expression menu item

然后你需要设置表达式将它包装在CDate转换函数中,然后放在Format函数中,如下所示:

Expression panel showing the DateTimeField expression being coerced to a Date type and then formatted.

格式化报告中的其他数据

有关有效格式的详细信息,请参阅Microsoft的MSDN Library中的这四个页面:

  1. Standard Numeric Format Strings
  2. Custom Numeric Format Strings
  3. Standard Date and Time Format Strings
  4. Custom Date and Time Format Strings

答案 1 :(得分:1)

假设您有一个实际的TIME数据类型,SSRS似乎无法正确地将格式应用于该数据类型。在某些情况下,您将看不到格式化,而在其他情况下(例如使用SSDT BI),您将得到以下行的实际错误:

[rsInvalidFormatString] The Format value for the textrun ‘CurrentTime_AS_TIME.Paragraphs[0].TextRuns[0]’ is not valid. Input string was not in a correct format.

通过此选项的选项是将TIME值转换为查询中的日期时间,或将字段设置为如下表达式:

=Today + Fields!CurrentTime_AS_TIME.Value

然后两者都允许您使用HH:mm格式正确格式化字段。

从这里引用:Displaying Time in Reporting Services 2008