从HH:mm上传到HH:mm:ss时,SQL服务器上我的一个表中的时间列格式发生了变化。首先,有没有办法阻止这种转换?其次,既然它是那种格式,我怎么能把它显示为HH:mm?我尝试了以下方法无济于事:
前两次格式化尝试仍返回HH:mm:ss并使用Left函数返回#Error。
为什么会发生这种情况以及如何解决这个问题?
由于
答案 0 :(得分:3)
有两种方法,具体取决于您在报告中设置字段的方式。您要做的第一件事是在报表生成器中加载报表。
首先,我想确保您可以看到属性窗格,因此在功能区的“视图”选项卡组下,确保将“属性”窗格设置为可见:
如果该字段位于包含多个表达式的文本框中,如此,其中[DateTimeField]是数据集中的实际字段:
然后您将选择字段项本身:
然后,在属性窗格中,您应该看到“格式”设置。将格式设置为“hh:mm”,如下所示:
如果报表生成器中的字段如下所示,则可以在整个文本框中设置格式:
选择文本框或单元格:
在属性窗格中,您可以将Format属性设置为“hh:mm”,以便在项目上获得所需的格式:
将数据转换为您知道的报表生成器可以格式化的数据类型,例如日期类型,然后在那里格式化。为此,您需要右键单击相关字段并选择“表达式”:
然后你需要设置表达式将它包装在CDate转换函数中,然后放在Format函数中,如下所示:
有关有效格式的详细信息,请参阅Microsoft的MSDN Library中的这四个页面:
答案 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格式正确格式化字段。