如何在SSRS报表中分别格式化日期中的日和月份
SSRS自定义带序数后缀的日期格式配置方案
你需要实现的Dated this *25th* day of *February* 2021格式可以通过以下两种方法配置:
方法1:单处使用直接写SSRS表达式
直接在需要显示该日期的文本框中填写如下表达式即可,无需额外配置:
="Dated this " & Switch( Day(Fields!你的日期字段.Value) Mod 100 >=11 And Day(Fields!你的日期字段.Value) Mod 100 <=13, CStr(Day(Fields!你的日期字段.Value)) & "th", Day(Fields!你的日期字段.Value) Mod 10 = 1, CStr(Day(Fields!你的日期字段.Value)) & "st", Day(Fields!你的日期字段.Value) Mod 10 = 2, CStr(Day(Fields!你的日期字段.Value)) & "nd", Day(Fields!你的日期字段.Value) Mod 10 = 3, CStr(Day(Fields!你的日期字段.Value)) & "rd", True, CStr(Day(Fields!你的日期字段.Value)) & "th" ) & " day of " & Format(Fields!你的日期字段.Value, "MMMM yyyy")
注意:把表达式中所有
Fields!你的日期字段.Value替换为你实际绑定的日期字段名即可。
如需显示中文月份,将Format(Fields!你的日期字段.Value, "MMMM yyyy")替换为Format(Fields!你的日期字段.Value, "MMMM yyyy", new System.Globalization.CultureInfo("zh-CN"))。
方法2:多处使用可封装为自定义代码
如果整个报表多个位置需要用到该格式,可封装为公共函数复用:
- 右键报表空白处选择「报表属性」,切换到「代码」选项卡
- 粘贴以下VB自定义函数:
Public Function GetOrdinalDate(dt As Date) As String Dim dayNum As Integer = dt.Day Dim suffix As String ' 处理11、12、13的特殊后缀规则 If dayNum Mod 100 >= 11 AndAlso dayNum Mod 100 <=13 Then suffix = "th" Else Select Case dayNum Mod 10 Case 1 : suffix = "st" Case 2 : suffix = "nd" Case 3 : suffix = "rd" Case Else : suffix = "th" End Select End If Return "Dated this " & dayNum.ToString() & suffix & " day of " & dt.ToString("MMMM yyyy") End Function
- 在需要显示的文本框中调用函数即可,表达式为:
=Code.GetOrdinalDate(Fields!你的日期字段.Value)
内容的提问来源于stack exchange,提问作者DThomas221
相关产品推荐
相关产品推荐

