在 SSRS 中将 YYYYMM 格式化为 MMMYYYY

Formatting YYYYMM to MMMYYYY in SSRS

我想将我的一个数据字段格式化为 MMM YYYY 的日期格式。例如,如果返回“201209”,那么我希望它显示为 2012 年 9 月。在 SQL 方面,我使用 CAST 仅查看年份和月份,通常该字段看起来比如“20120914”。这是我在程序中使用的内容:

cast(left(cast(TransactionDateKey as varchar(100)), 6) as int)

在 SSRS 中,我使用以下代码:

=Format(DateValue(MonthName(Right(Fields!Month.Value, 2))
 + "," + 
 Left(Fields!Month.Value,4)), "Y")

但是输出是 "September 2012",我如何才能得到缩写 "Sep",而不是完整的月份名称?

另一个选项是 SQL 服务器中的 Format()

Select Format(CONVERT (date,convert(char(8),TransactionDateKey )),'MMM yyyy')

例如

Select Format(CONVERT (date,convert(char(8),20120914 )),'MMM yyyy')
-- Returns Sep 2012

我应该注意到 Format() 的性能并不出名,但确实提供了一些不错的功能

在 SSRS 中您可以使用:

=StrConv(LEFT(
MONTHNAME(REPLACE(RIGHT(Fields!Month.Value,2),"0","")),3
),vbProperCase,NOTHING) & " " & LEFT(Fields!Month.Value,4)

returns Sep 2012 201209.

如果有帮助请告诉我。

如果您 return 在数据集中创建一个实际的 datetime 字段 - 这就是您的 TransactionDateKey 看起来是什么 - 您可以使用 SSRS 表达式完全处理格式format:

=format(Fields!TransactionDateKey.Value,"MMM yyyy")

如果您 return 出于分组目的对您的 yyyyMM 进行分组,没有什么可以阻止您对 TransactionDateKey 本月第一天的 datetime 值进行分组在你的 SQL:

select dateadd(m,datediff(m,0,TransactionDateKey),0) as FirstDayOfTheMonth

如果你绝对需要return一个varchar格式yyyyMM,您可以将其转换为 MMM yyyy,但您首先需要在表达式中将其转换为 date - 斜杠和所有 - 在 SSRS 开始之前:

=format(cdate(left(Fields!Month.Value,4) & "/" & right(Fields!Month.Value,2) & "/01"), "MMM yyyy")