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

9

我的任务是修改以下代码,以显示没有秒的时间,并带有上午/下午:

=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无法满足我尝试做的事情后,我发现以下内容不起作用(只是查看与时间字段相关的代码片段):

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")

我从这里获取格式代码。

我做错了什么?


这个问题和答案都质量低劣;你的问题到底需要修复什么?哪些地方不起作用?当我找到第一个链接时,有多少搜索是做过的,它说你的解决方案不起作用。链接为:http://social.msdn.microsoft.com/Forums/en-us/sqlreportingservices/thread/3042602f-1e44-43ae-8b5b-22da1a14c67c - LittleBobbyTables - Au Revoir
也许我有些误解。我被告知这个网站的QA环境可以像维基一样工作,是一个保存有用信息的地方。事实上,在找到下面的答案之前(已经测试过),我确实进行了相当多的搜索。 - sacredfaith
想象一下,如果有人读了你的问题:“有人能告诉我如何修复这个问题吗?” 你没有说明出现了什么问题,你遇到了什么错误,或者你试图修复什么,除了某种格式问题之外。 如果其他人看到这个问题,他们不会知道你的答案是否适用,因为甚至不清楚你遇到了什么问题。 - LittleBobbyTables - Au Revoir
好的,我明白了 - 我更多地考虑的是“尝试其他方法”,因为很少有问题情况完全匹配(即如果我过度指定)。我的收获是“好的,所以我没有包含足够的信息 - 我至少应该提供足够的信息,以便读者对我想要实现的目标有一些想法”。这样正确吗? - sacredfaith
谢谢你,LittleBobbyTables - 我一定会修复这个问题。顺祝商祺。 - sacredfaith
4个回答

11

我发现由于我本质上是在尝试格式化一个文本框,因此 SSRS 从未真正“知道”它是一个时间字段。虽然我不完全确定我的推理是否正确,但这解释了以下操作的原因:

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

是的,我发现我必须将“time”字段强制转换为“datetime”,才能使用时间格式对其进行格式化。 - Aaron Mason

10
如果您的数据在简单的文本框(或表格单元格)中,则有更容易的解决方案。 右键单击文本框 > 属性: 使用以下内容: 输入图片描述

7
其他回答是正确的,但需要知道格式的关键区别是:
 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)

5

从文本框属性 -> 数字 -> 自定义类别:

尝试输入以下内容:

dd-MMM-yy hh:mm tt


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接