如何将SSRS中的时间格式化为HH:MM AM / PM格式?

时间:2013-02-20 15:16:55

标签: datetime reporting-services

我的任务是扩充以下代码以显示没有秒的时间,以及使用AM / PM:

=IIF(Fields!New_Date.Value <> "NO CHANGE", FormatDateTime(IIF(Fields!New_Date.Value = "NO CHANGE","1/1/12",Fields!New_Date.Value),DateFormat.ShortDate), "") &
IIF(Fields!New_Time.Value <> "NO CHANGE",FormatDateTime(IIF(Fields!New_Time.Value = "NO CHANGE","00:00",Fields!New_Time.Value),DateFormat.ShortTime), "")

在意识到FormatDateTime不足以满足我的目的时,我发现以下内容不起作用(仅查看与时间字段相关的snippit),

Format(IIF(Fields!New_Time.Value = "NO CHANGE","00:00",Fields!New_Time.Value),"HH:mm tt")  

或者这个

Format(IIF(Fields!New_Time.Value = "NO CHANGE","00:00",Fields!New_Time.Value),"HH:MM tt")

我从here获取格式代码。

我做错了什么?

4 个答案:

答案 0 :(得分:7)

所以我发现因为我本质上是在试图格式化文本框,所以SSRS从来没有真正“知道”这是一个时间字段。虽然我不是100%确定我的推理是正确的,但它确实解释了为什么以下有效:

Format(CDate(IIF(Fields!New_Time.Value = "NO CHANGE","00:00",Fields!New_Time.Value)),"hh:mm tt")

答案 1 :(得分:6)

如果您的数据位于简单文本框(或表格单元格)中,则您可以使用更简单的解决方案。

右键单击文本框&gt;属性:

使用以下内容: enter image description here

答案 2 :(得分:4)

来自文本框属性 - &gt;数字 - &gt;自定义类别:

尝试输入:

dd-MMM-yy hh:mm tt

答案 3 :(得分:3)

其他答案是正确的,但与格式有关的主要区别是:

 h:mm tt --> 12-hour clock (e.g. 5:30 PM)
hh:mm tt --> 12-hour clock with a leading zero, if necessary (e.g. 05:30 PM)
 H:mm    --> 24-hour clock (e.g. 1:30 for 1:30 AM)
HH:mm    --> 24-hour clock with a leading zero, if necessary (e.g. 01:30 for 1:30 AM)