You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:36:02