我该如何在SSRS报告中格式化日期和时间?

151

在SSRS报告中,我需要显示今天的日期和当前时间

我尝试了这个=FormatDateTime(Now,"MM/dd/yyyy hh:mm tt"),但是它对我不起作用,会出现错误。

请问有人能帮我解决表达式吗?

我希望输出的显示格式像这样4/12/2013 12:05 PM

11个回答

275
=Format(Now(), "MM/dd/yyyy hh:mm tt")

输出:

04/12/2013 05:09 PM

完整的格式选项列表可以在此处找到。感谢@MattGibson。


12
本文介绍了可能用于 Format() 函数的格式字符串,详见日期和时间格式字符串。我提到这一点是因为当我来到这里时,正是我在寻找的内容。 - Matt Gibson

22
如果日期和时间在单独的单元格(即文本框)中,则应考虑将格式应用于整个文本框。这将创建更清晰的导出到其他格式;特别是,该值将作为日期时间值导出到Excel,而不是字符串。
使用属性窗格或对话框将文本框的格式设置为“MM/dd/yyyy hh:mm tt”。
仅当日期时间与其他字符串连接时,才会使用Ian的答案。

4
供需要此答案的人使用的小提示:将格式设置为 ="MM/dd/yyyy hh:mm tt"。如果忘记了 =,则每个单元格都只会显示 "MM/dd/yyyy hh:mm tt" 的文本。 - user1261104

8
希望这可以帮到你:
SELECT convert(varchar, getdate(), 100) -- mon dd yyyy hh:mmAM

SELECT convert(varchar, getdate(), 101) -- mm/dd/yyyy – 10/02/2008                  

SELECT convert(varchar, getdate(), 102) -- yyyy.mm.dd – 2008.10.02           

SELECT convert(varchar, getdate(), 103) -- dd/mm/yyyy

SELECT convert(varchar, getdate(), 104) -- dd.mm.yyyy

SELECT convert(varchar, getdate(), 105) -- dd-mm-yyyy

SELECT convert(varchar, getdate(), 106) -- dd mon yyyy

SELECT convert(varchar, getdate(), 107) -- mon dd, yyyy

SELECT convert(varchar, getdate(), 108) -- hh:mm:ss

SELECT convert(varchar, getdate(), 109) -- mon dd yyyy hh:mm:ss:mmmAM (or PM)

SELECT convert(varchar, getdate(), 110) -- mm-dd-yyyy

SELECT convert(varchar, getdate(), 111) -- yyyy/mm/dd

SELECT convert(varchar, getdate(), 112) -- yyyymmdd

SELECT convert(varchar, getdate(), 113) -- dd mon yyyy hh:mm:ss:mmm

SELECT convert(varchar, getdate(), 114) -- hh:mm:ss:mmm(24h)

SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)

SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm

SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm

格式化应该永远不要在数据库中进行。这会产生各种问题(排序、过滤等)。它只应该在表示层(在本例中为报表)中完成。这个解决方案并不推荐。 - swissmawi

7

我在使用SSRS 2005中的以下内容:

=Format(Globals!ExecutionTime,"MM-dd-yyyy" & " ") 
& CStr(Hour(Globals!ExecutionTime))  & ":"
& CStr(Minute(Globals!ExecutionTime))

或者

=Format(Globals!ExecutionTime,"MM-dd-yyyy" & " ") 
& Right("00" & CStr(Hour(Globals!ExecutionTime)), 2)
& ":"
& Right("00" & CStr(Minute(Globals!ExecutionTime)), 2)

或者:

=Format(CDate(Globals!ExecutionTime), "MM-dd-yyyy hh:mm.ss") 

或者

=Format(CDate(Globals!ExecutionTime), "MM-dd-yyyy HH:mm.ss")

4
两者都可以看起来更简单: =Format(CDate(Globals!ExecutionTime), "MM-dd-yyyy hh:mm.ss")=Format(CDate(Globals!ExecutionTime), "MM-dd-yyyy HH:mm.ss") - desperate man

6
在SSRS 2016中,属性标题“Localization”下有一个名为“Calendar”的选项,如果您单击它,将会给出以下两个选项:
- Gregorian (dd/mm/yyyy) - GregorianUSEnglish (MM/dd/yyyy)
当引用来自表格的数据时,这个功能也非常好用。或者,如果这不适用于您,请在“Number”下指定其中一个格式,并在单元格“Format”中输入:dd/MM/yyyyMM/dd/yyyyprintscreen

2
以下是我使用Visual Studio 2017为针对SSRS 2017的RDL执行操作的方式:
在设计表面上的文本框中,右键单击字段并选择“占位符属性”。选择“数字”面板,然后在“类别”列表框中单击“日期”,接着在“类型”列表框中选择所需的格式即可。请保留HTML标签。

1
=Replace(Format(CDate(Now()),"MM.dd.yyyy"), ".", "/")

1
如果您单击报表上任何表格之外的空白区域,然后查看属性,其中一个杂项字段名为“Language”,允许您选择要设置的语言,然后可以进行调整。
=FormatDateTime(now,x)

哪个x可以是1、2、3、4、5


1
首先进入您的控制面板,选择日期、时间和数字格式。现在从下拉列表中选择英语(英国)。确保短日期字段等于“dd/mm/yyyy”。点击应用。现在转到 SSRS,在空白处右键单击报告,然后选择属性。
如果您正在使用 Visual Studio,则将语言属性设置为=User!Language。
如果您正在使用 Report Builder,则语言属性将出现在本地化部分。

1
如果您想要日期和时间分开显示,请使用以下表达式: 日期和时间表达式 表达式1 当前日期: =formatdatetime(today) 返回的日期是 = 11/15/2016 表达式2 当前时间: =CDate(Now).ToString("hh:mm tt") 返回的时间是 = 3:44 PM
此报告打印于 表达式1表达式2 输出结果将是: 两个表达式的输出 此报告打印于 11/15/20163:44 PM

谢谢,我尝试使用Expression2,但它显示的是下午03:44。有没有办法让它显示下午3:44并去掉前导0? - Helen Neely

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