reporting-services - 在 SSRS 中设置自定义格式表达式时,月份和日期名称出现乱码
问题描述
我的数据集有一个Datetime
名为FilmReleaseDate
. 如果我设置文本框属性以使用其中一种股票日期格式设置日期格式,则它可以正常工作。但是如果我选择自定义并输入一个表达式,我会得到垃圾。
例如,日期的实际值将是12/15/2005
,如果我只想显示月份以便输出为“December”,我使用以下表达式作为自定义格式:=MonthName(Month(Fields!FilmReleaseDate.Value))
报告上显示的是Dece0ber
.
我也尝试过使用可选的布尔参数:
=MonthName(Month(Fields!FilmReleaseDate.Value), false)
但结果是一样的。
同样,在尝试仅显示星期几时。
相同的值12/15/2005
。
表达方式:=WeekdayName(Weekday(Fields!FilmReleaseDate.Value,0),false,0)
但输出的是:T12ur015a5
不知道发生了什么。
编辑 -
使用相同的表达式创建计算字段,一切都正确显示。只有在自定义格式窗口中使用表达式时才会出现这种情况。
解决方案
该自定义格式框中可以包含特定的格式/规则,类似于 Excel 等。当您将表达式放在那里时,它会将表达式评估为December
,然后转换December
为格式模板,并将该模板应用于 2005 年 12 月 15 日。所有这些最终共同产生了Dece0ber
.
有几个选项可以得到你想要的:
- 只需将该表达式作为文本框的值(从您的编辑看来,您通过使用计算字段获得了类似的结果)。
- 使用正确的自定义格式,从而返回月份名称。在这种情况下,您将在自定义格式框中输入的是
MMMM
(区分大小写)。我相信此链接简要介绍了自定义格式的可能性。专门用于月份名称的部分在这里。
使用第一个链接,我们可以弄清楚我们Dece0ber
最初是如何得到的。字符 D、e、c、b 或 r 没有日期/时间格式,因此它们完全按原样显示。“m”有一种格式,即日期时间的分钟。我假设您的FilmReleaseDate
字段只是一个日期,所以分钟为 0。因此Dece0ber
。
同样对于工作日,2005 年 12 月 15 日似乎是星期四。所以自定义格式字符串是“星期四”。字符 T、u、r 和 a 没有日期/时间格式。“h”是小时(1-12),如果FilmReleaseDate
只是一个日期,那么时间是午夜,所以小时是 12。“s”是秒,对于日期来说,秒也是 0。“d”是天,所以我们在那里看到 15。而“y”是一位或两位数的年份,没有前导零,所以 2005 的末尾有 5。把它们放在一起,我们得到T12ur015a5
。
推荐阅读
- sql - Python3 导入 psycopg2 失败
- c# - 为什么这个正则表达式在 powershell 中不起作用?
- reactjs - ReactJS Jest 酶单元测试 axios.get() axios.post()
- matlab - 如何将预训练的网络模型从 Keras 导入 Matlab?
- graphql - 如何将 GraphQL 查询中的变量与值进行比较
- python - 从 Dataframe 的列创建元组
- javascript - 使用 Uppy Tus 的 Vimeo Resumable 方法失败,响应代码:412,响应文本:不支持的版本
- postman - 为什么相同的 URL 会给出不同的结果?
- swift - 画线时触摸结束时线不一致
- excel - 使用 VBA 摆脱带有文本的单元格的科学记数法