Equ*_*lsk 3 format datetime reporting-services ssrs-2008
我正在 SSRS 中创建一个报告,顶部有一个标题,其中包含“上次刷新”占位符,它将显示报告上次运行的时间。
我在占位符中的功能很简单:
=Format(Now, "dddd dd MMMM yyyy hh:mm tt")
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
2015 年 9 月 22 日星期一 09:46
我想用英文后缀 st、nd、rd 和 th 适当地格式化日期值。
我找不到用于此目的的内置函数,并且到目前为止我所查看的指南似乎描述了如何在 SQL 端使用我不想要的存储过程来执行此操作。我正在寻找报告端解决方案。
我以为我可以摆脱一个丑陋的嵌套IIF,但它出错了,尽管没有给我任何语法错误(空格只是为了可读性)。
=Format(Now, "dddd " +
IIF(DAY(Now) = "1", "1st",
IIF(DAY(Now) = "21","21st",
IIF(DAY(Now) = "31","31st",
IIF(DAY(Now) = "2","2nd",
IIF(DAY(Now) = "22","22nd",
IIF(DAY(Now) = "3","3rd",
IIF(DAY(Now) = "23","23rd",
DAY(Now) + "th")))))))
+ " MMMM yyyy hh:mm tt")
Run Code Online (Sandbox Code Playgroud)
在任何其他语言中,我很久以前就已经解决了这个问题,但 SSRS 对我来说是新的,所以我不确定如何进行简单的字符串操作。令人沮丧!
感谢您给我的任何帮助或指示。
编辑:我读过有关将 VB 代码插入报告中的内容,这可以解决我的问题,但我一定要疯了,因为我看不到在哪里添加它。指南说要进入“属性”>“代码”部分,但我看不到。
小智 5
转到布局视图。选择报告属性。单击“代码”选项卡并输入此代码
Public Function ConvertDate(ByVal mydate As DateTime) as string
Dim myday as integer
Dim strsuff As String
Dim mynewdate As String
'Default to th
strsuff = "th"
myday = DatePart("d", mydate)
If myday = 1 Or myday = 21 Or myday = 31 Then strsuff = "st"
If myday = 2 Or myday = 22 Then strsuff = "nd"
If myday = 3 Or myday = 23 Then strsuff = "rd"
mynewdate = CStr(DatePart("d", mydate)) + strsuff + " " + CStr(MonthName(DatePart("m", mydate))) + " " + CStr(DatePart("yyyy", mydate))
return mynewdate
End function
Run Code Online (Sandbox Code Playgroud)
在必填字段中添加以下表达式。我使用了参数,但您可能引用了数据字段?
=code.ConvertDate(Parameters!Date.Value)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8217 次 |
| 最近记录: |