2

我想将我的数据字段之一格式化为 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")

但是输出是“2012 年 9 月”,我将如何获取缩写“Sep”,而不是完整的月份名称?

4

3 回答 3

2

另一个选项是 SQL Server 中的 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() 并不以其性能而闻名,但确实提供了一些不错的功能

于 2017-01-23T21:17:22.467 回答
2

如果您datetime在数据集中返回一个实际字段 - 这就是您的样子TransactionDateKey- 您可以使用 SSRS 表达式完全处理格式format

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

如果您yyyyMM出于分组目的返回您的,则没有什么能阻止您在 SQLdatetime中对每月第一天的值进行分组:TransactionDateKey

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

如果您绝对需要以varchar格式返回 a ,则yyyyMM可以将其转换为MMM yyyy,尽管您首先需要date在表达式中将其转换为 a ——斜杠和所有——在 SSRS 开始之前:

=format(cdate(left(Fields!Month.Value,4) & "/" & right(Fields!Month.Value,2) & "/01"), "MMM yyyy")
于 2017-01-24T14:19:31.390 回答
1

在 SSRS 中,您可以使用:

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

哪个返回Sep 2012.201209

让我知道这是否有帮助。

于 2017-01-23T21:30:19.737 回答